diff --git a/.gitignore b/.gitignore index 86909831..9482df77 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ /node_modules /.pnp .pnp.js +/contracts +/artifacts +hardhat.config.ts # testing /coverage diff --git a/README.md b/README.md index 83918e37..6f0ebeeb 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,15 @@ NEXT_PUBLIC_STORAGE_URL_ALPHA='https://storage.googleapis.com/nof-alpha' NEXT_PUBLIC_STORAGE_URL_GAMMA='https://storage.googleapis.com/nof-gamma' NEXT_PUBLIC_ADMIN_ACCOUNTS='0x35dad65F60c1A32c9895BE97f6bcE57D32792E83,0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' +# Only por local environment to put contracts addresses from hardhat +NEXT_PUBLIC_NOF_DAI_HARDHAT_CONTRACT_ADDRESS='' +NEXT_PUBLIC_NOF_ALPHA_HARDHAT_CONTRACT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_CARDS_HARDHAT_CONTRACT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_PACKS_HARDHAT_CONTRACT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_OFFERS_HARDHAT_CONTRACT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_TICKETS_HARDHAT_CONTRACT_ADDRESS='' + + ``` The source code of the smart contracts is located at [https://github.com/P4-Games/NoF-Smart-Contracts](https://github.com/P4-Games/NoF-Smart-Contracts). If you want to run them locally (example: on a hardhat or ganache node), after compiling them locally, change the addresses in the .env and set these options to network: diff --git a/example_env b/example_env index e1d5830c..dc286e90 100644 --- a/example_env +++ b/example_env @@ -20,3 +20,12 @@ NEXT_PUBLIC_APP_ENV='development' NEXT_PUBLIC_STORAGE_URL_ALPHA='https://storage.googleapis.com/nof-alpha' NEXT_PUBLIC_STORAGE_URL_GAMMA='https://storage.googleapis.com/nof-gamma' NEXT_PUBLIC_ADMIN_ACCOUNTS='0x...,0X....,0xfa3....' // accounts separated by a comma + +// Only por local environment to put contracts addresses from hardhat +NEXT_PUBLIC_NOF_DAI_CONTRACT_CURRENT_ADDRESS='' +NEXT_PUBLIC_NOF_ALPHA_CONTRACT_CURRENT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_CARDS_CONTRACT_CURRENT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_PACKS_CONTRACT_CURRENT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_OFFERS_CONTRACT_CURRENT_ADDRESS='' +NEXT_PUBLIC_NOF_GAMMA_TICKETS_CONTRACT_CURRENT_ADDRESS='' + diff --git a/src/config.js b/src/config.js index 55141228..6f068577 100644 --- a/src/config.js +++ b/src/config.js @@ -57,6 +57,25 @@ export const adminAccounts = // calculated variables // ------------------------------------------------------------------ +const hardhatContractAddressDAI = removeQuotes( + process.env.NEXT_PUBLIC_NOF_DAI_HARDHAT_CONTRACT_ADDRESS +) +const hardhatContractAddressAlpha = removeQuotes( + process.env.NEXT_PUBLIC_NOF_ALPHA_HARDHAT_CONTRACT_ADDRESS +) +const hardhatContractAddressGammaCards = removeQuotes( + process.env.NEXT_PUBLIC_NOF_GAMMA_CARDS_HARDHAT_CONTRACT_ADDRESS +) +const hardhatContractAddressGammaPacks = removeQuotes( + process.env.NEXT_PUBLIC_NOF_GAMMA_PACKS_HARDHAT_CONTRACT_ADDRESS +) +const hardhatContractAddressGammaOffers = removeQuotes( + process.env.NEXT_PUBLIC_NOF_GAMMA_OFFERS_HARDHAT_CONTRACT_ADDRESS +) +const hardhatContractAddressGammaTickets = removeQuotes( + process.env.NEXT_PUBLIC_NOF_GAMMA_TICKETS_HARDHAT_CONTRACT_ADDRESS +) + export const defaultSettings = { languagePresets: 'es', languageSetted: 'es' @@ -86,12 +105,13 @@ export const NETWORKS = { chainNodeProviderUrl: NodeProviderUrlMumbai // visible ONLY in server side code! (in cliente side will be undefined) }, contracts: { - daiAddress: '0xfbC22278A96299D91d41C453234d97b4F5Eb9B2d', - alphaAddress: '0x46b142DD1E924FAb83eCc3c08e4D46E82f005e0E', - gammaCardsAddress: '0xC9a43158891282A2B1475592D5719c001986Aaec', - gammaPackAddress: '0x1c85638e118b37167e9298c2268758e058DdfDA0', - gammaOffersAddress: '0x367761085BF3C12e5DA2Df99AC6E1a824612b8fb', - gammaTicketsAddress: '0x4C2F7092C2aE51D986bEFEe378e50BD4dB99C901' + // In local environment (hardhat), it take contracts addresss from environment variables + daiAddress: hardhatContractAddressDAI, + alphaAddress: hardhatContractAddressAlpha, + gammaCardsAddress: hardhatContractAddressGammaCards, + gammaPackAddress: hardhatContractAddressGammaPacks, + gammaOffersAddress: hardhatContractAddressGammaOffers, + gammaTicketsAddress: hardhatContractAddressGammaTickets } }, mumbai: { @@ -110,11 +130,11 @@ export const NETWORKS = { }, contracts: { daiAddress: '0xEa4c35c858E15Cef77821278A88435dE57bc8707', - alphaAddress: '0x7C201e88e43b5FBEEfB77F966c2a5D2E09178B49', - gammaCardsAddress: '0x34658c07F05638E12793d0961595cBc72fA69452', - gammaPackAddress: '0xDc06FbD70b2159863d079aE282d69AEe8a88A18E', - gammaOffersAddress: '0x3Da346C40A0D90cf5642944613586439A3456d45', - gammaTicketsAddress: '0x7593aad3e13fBd27F113aad8688E8817Ac4f9A33' + alphaAddress: '0x816EA704F9bEf91284bA72bEBdAC1d1c5788246b', + gammaCardsAddress: '0x394Fc1975972de88806b2E81Ed53f3E020f29D09', + gammaPackAddress: '0xfb4C387227d3692Be50376ff930472294ADEcED8', + gammaOffersAddress: '0x1eDB114Bb7A0CBaDA9c9550BD2F3F1bFC08Bd7a7', + gammaTicketsAddress: '0x091C994c5766D79bF592e08C71D49C49Eaf1DCee' } }, 'bsc-testnet': { @@ -131,12 +151,12 @@ export const NETWORKS = { chainNodeProviderUrl: NodeProviderUrlbscTestnet // visible ONLY in server side code! (in cliente side will be undefined) }, contracts: { - daiAddress: '0x83330b5803838604d85B7Cba393C930084F45A7d', - alphaAddress: '0x4eE8C9cc2cF081f11F56A264EF52e3FeaDe1b35e', - gammaCardsAddress: '0x25f85D878972f9506b4De49cEff480f627935521', - gammaPackAddress: '0x71aA05fD8532a1395DffaB6FdA8be191fC8168FE', - gammaOffersAddress: '0x168eE5cfE8b7EDC7F24cA0326DFfF3Ef6DF37f2F', - gammaTicketsAddress: '0xA5c3Cd20AB6FF1e299D93ee268370BCC19a32E71' + daiAddress: '0x1ba960c6f624eC8d3fA3ACC4aFaF867538afd787', + alphaAddress: '0x56e14bf3adBE4C7566b4F9dCC9acc264429f5DC9', + gammaCardsAddress: '0x369443c3a885b6687d0f2a2Dc97b4EC69b9d90b3', + gammaPackAddress: '0xA62A947c0BD0A14317A6EAd7e32b227f4F9C36ef', + gammaOffersAddress: '0x4C1d15c7EcEDF52eE7073CeD26b0A6c482b27c69', + gammaTicketsAddress: '0xC67963E0742074bfa74610D28663FB3a524201D8' } }, 'opbnb-testnet': { @@ -153,12 +173,12 @@ export const NETWORKS = { chainNodeProviderUrl: NodeProviderUrlopBnbTestnet // visible ONLY in server side code! (in cliente side will be undefined) }, contracts: { - daiAddress: '0x46480E0d10966Ea274831D9693a56f9c09D7339d', - alphaAddress: '0x36f19A5397DbE26b548b15C158f7a8e00979B408', - gammaCardsAddress: '0x2842c8FD88F801018E53dDDeBbC944aE377D0F72', - gammaPackAddress: '0x1116218412559628B67aa15F3c527D68F0A71b91', - gammaOffersAddress: '0xe810524F7C7C62A2201FdF1bCA20649Bd7D70844', - gammaTicketsAddress: '0xd9988C491805AE2573FA156b27CDE1a6f7B3E073' + daiAddress: '0xE3Afd0e2b6b955a56A1823039DE577d3ce7B15BC', + alphaAddress: '0xaAf52b86Cb71c14bd01eC6AC88481BC94470fFD7', + gammaCardsAddress: '0x4a65B5138fCaBFE8a7c676688E9884F1eBdc1906', + gammaPackAddress: '0xd792e3040FaCa21E0a7414422DeC6000Cc66BB79', + gammaOffersAddress: '0xB90B462d5c609CC548a8135C264b212688A9Fe1f', + gammaTicketsAddress: '0xa7ec2fd75cAfd694866AF76e865D8b34b24CB5D8' } }, matic: { @@ -186,3 +206,8 @@ export const NETWORKS = { } // ------------------------------------------------------------------ + +function removeQuotes(text) { + if (text === '' || !text) return text + return text.replace(/['"]/g, '') +} diff --git a/src/context/GammaDataContext.js b/src/context/GammaDataContext.js index 72109ebd..9a4c82a2 100644 --- a/src/context/GammaDataContext.js +++ b/src/context/GammaDataContext.js @@ -25,13 +25,18 @@ const GammaDataContextProvider = ({ children }) => { const [currentAlbum, setCurrentAlbum] = useState(ALBUMS.INVENTORY) const refreshPaginationObj = async () => { - const userCards = await getCardsByUser(gammaCardsContract, walletAddress) - setPaginationObj({}) // para limpiar ref - setPaginationObj(userCards) - setAlbums120Qtty(getAlbums120Qtty()) - setAlbums60Qtty(getAlbums60Qtty()) - setUniqueCardsQtty(getUniqueCardsQtty()) - setRepeatedCardsQtty(getRepeatedCardsQtty()) + try { + const userCards = await getCardsByUser(gammaCardsContract, walletAddress) + setPaginationObj({}) // para limpiar ref + setPaginationObj(userCards) + setAlbums120Qtty(getAlbums120Qtty()) + setAlbums60Qtty(getAlbums60Qtty()) + setUniqueCardsQtty(getUniqueCardsQtty()) + setRepeatedCardsQtty(getRepeatedCardsQtty()) + } catch (e) { + console.error({ e }) + throw e + } } const generatePaginationObjToBurn = (force) => { diff --git a/src/context/Web3Context.js b/src/context/Web3Context.js index bedab265..e317fae3 100644 --- a/src/context/Web3Context.js +++ b/src/context/Web3Context.js @@ -4,12 +4,12 @@ import { ethers } from 'ethers' import { createWeb3Modal, defaultConfig } from '@web3modal/ethers5/react' import { useWeb3ModalProvider, useWeb3ModalAccount } from '@web3modal/ethers5/react' import { useWeb3Modal, useDisconnect } from '@web3modal/ethers5/react' -import daiAbi from './abis/TestDAI.v3.sol/NofTestDAIV3.json' -import alphaAbi from './abis/Alpha.v3.sol/NofAlphaV3.json' -import gammaPacksAbi from './abis/GammaPacks.v3.sol/NofGammaPacksV3.json' -import gammaCardsAbi from './abis/GammaCards.v5.sol/NofGammaCardsV5.json' -import gammaOffersAbi from './abis/GammaOffers.v4.sol/NofGammaOffersV4.json' -import gammaTicketsAbi from './abis/GammaTickets.v1.sol/NofGammaTicketsV1.json' +import daiAbi from './abis/testDai/TestDAI.v3.sol/NofTestDAIV3.json' +import alphaAbi from './abis/alpha/Alpha.v3.sol/NofAlphaV3.json' +import gammaPacksAbi from './abis/gamma/GammaPacks.v3.sol/NofGammaPacksV3.json' +import gammaCardsAbi from './abis/gamma/GammaCards.v5.sol/NofGammaCardsV5.json' +import gammaOffersAbi from './abis/gamma/GammaOffers.v4.sol/NofGammaOffersV4.json' +import gammaTicketsAbi from './abis/gamma/GammaTickets.v1.sol/NofGammaTicketsV1.json' import { NETWORKS, walletConnectProjectId, environment } from '../config' import { NotificationContext } from './NotificationContext' import { getAccountAddressText } from '../utils/stringUtils' diff --git a/src/context/abis/GammaCards.v5.sol/NofGammaCardsV5.json b/src/context/abis/GammaCards.v5.sol/NofGammaCardsV5.json deleted file mode 100644 index 4160c544..00000000 --- a/src/context/abis/GammaCards.v5.sol/NofGammaCardsV5.json +++ /dev/null @@ -1,1804 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NofGammaCardsV5", - "sourceName": "contracts/gamma/GammaCards.v5.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "player", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "albumClass", - "type": "uint8" - } - ], - "name": "AlbumCompleted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "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": false, - "internalType": "uint256", - "name": "_fromTokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_toTokenId", - "type": "uint256" - } - ], - "name": "BatchMetadataUpdate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "player", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "cardTokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "albumTokenId", - "type": "uint256" - } - ], - "name": "CardPasted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "CardTransfered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8[]", - "name": "cardsNumber", - "type": "uint8[]" - } - ], - "name": "CardsBurned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8[]", - "name": "cardNumber", - "type": "uint8[]" - } - ], - "name": "CardsTransfered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "EmergencyWithdrawal", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_tokenId", - "type": "uint256" - } - ], - "name": "MetadataUpdate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaOffersContract", - "type": "address" - } - ], - "name": "NewGammaOffersContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaPacksContract", - "type": "address" - } - ], - "name": "NewGammaPacksContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaTicketContract", - "type": "address" - } - ], - "name": "NewGammaTicketsContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newSigner", - "type": "address" - } - ], - "name": "NewSigner", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "newMainUri", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "newSecondaryUri", - "type": "string" - } - ], - "name": "NewUris", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumberFrom", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumberTo", - "type": "uint8" - } - ], - "name": "OfferCardsExchanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "player", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8[]", - "name": "packData", - "type": "uint8[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "packNumber", - "type": "uint256" - } - ], - "name": "PackOpened", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [], - "name": "DAI_TOKEN", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_tokenIdCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newSigner", - "type": "address" - } - ], - "name": "addSigner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "baseUri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[]", - "name": "cardNumbers", - "type": "uint8[]" - } - ], - "name": "burnCards", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "burnedCards", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "cards", - "outputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "number", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "pasted", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "class", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "completion", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "cardsByUser", - "outputs": [ - { - "internalType": "uint8", - "name": "amount", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "cardNumber", - "type": "uint256" - } - ], - "name": "cardsInventory", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "_maxPacksToOpenAtOnce", - "type": "uint8" - } - ], - "name": "changeMaxPacksToOpenAtOnce", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newPackPrice", - "type": "uint256" - } - ], - "name": "changePackPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "required", - "type": "bool" - } - ], - "name": "changeRequireOfferValidationInMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "required", - "type": "bool" - } - ], - "name": "changeRequireOfferValidationInTransfer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "required", - "type": "bool" - } - ], - "name": "changeRequireOpenPackSignerValidation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "emergencyWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumberFrom", - "type": "uint8" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumberTo", - "type": "uint8" - } - ], - "name": "exchangeCardsOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "finishAlbum", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "gammaOffersContract", - "outputs": [ - { - "internalType": "contract IgammaOffersContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gammaPacksContract", - "outputs": [ - { - "internalType": "contract IgammaPacksContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gammaTicketsContract", - "outputs": [ - { - "internalType": "contract IgammaTicketsContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getBurnedCardQttyByUser", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNum", - "type": "uint8" - } - ], - "name": "getCardQuantityByUser", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getCardsByUser", - "outputs": [ - { - "internalType": "uint8[]", - "name": "", - "type": "uint8[]" - }, - { - "internalType": "uint8[]", - "name": "", - "type": "uint8[]" - }, - { - "internalType": "bool[]", - "name": "", - "type": "bool[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLotteryPrize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNum", - "type": "uint8" - } - ], - "name": "hasCard", - "outputs": [ - { - "internalType": "bool", - "name": "has", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "hasCardByOffer", - "outputs": [ - { - "internalType": "bool", - "name": "has", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_daiTokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_gammaPacksContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_gammaOffersContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_gammaTicketsContract", - "type": "address" - }, - { - "internalType": "string", - "name": "_baseUri", - "type": "string" - }, - { - "internalType": "address", - "name": "_signer", - "type": "address" - } - ], - "name": "init", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "isSigner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lotteryPrizePercentage", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mainAlbumPrize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mainUri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxPacksToOpenAtOnce", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNum", - "type": "uint8" - } - ], - "name": "mintCard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "packNumber", - "type": "uint256" - }, - { - "internalType": "uint8[]", - "name": "packData", - "type": "uint8[]" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "openPack", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "packsQuantity", - "type": "uint8" - }, - { - "internalType": "uint256[]", - "name": "packsNumber", - "type": "uint256[]" - }, - { - "internalType": "uint8[][]", - "name": "packsData", - "type": "uint8[][]" - }, - { - "internalType": "bytes[]", - "name": "signatures", - "type": "bytes[]" - } - ], - "name": "openPacks", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "packPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "prizesBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "removeCardByOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_ownerToRemove", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_signerToRemove", - "type": "address" - } - ], - "name": "removeSigner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "requireOfferValidationInMint", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "requireOfferValidationInTransfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "requireOpenPackSignerValidation", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "restoreCardByOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "secondaryAlbumPrize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "secondaryUri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaOffersContract", - "type": "address" - } - ], - "name": "setGammaOffersContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaPacksContract", - "type": "address" - } - ], - "name": "setGammaPacksContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaTicketsContract", - "type": "address" - } - ], - "name": "setGammaTicketsContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "amount", - "type": "uint8" - } - ], - "name": "setLotteryPrizePercentage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "setMainAlbumPrize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "setPrizesBalance", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "setSecondaryAlbumPrize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "newMainUri", - "type": "string" - }, - { - "internalType": "string", - "name": "newSecondaryUri", - "type": "string" - } - ], - "name": "setUris", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "testAddCards", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "packNumber", - "type": "uint256" - }, - { - "internalType": "uint8[]", - "name": "packData", - "type": "uint8[]" - } - ], - "name": "testOpenPack", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "transferCard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint8[]", - "name": "cardNumbers", - "type": "uint8[]" - } - ], - "name": "transferCards", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "packNumber", - "type": "uint256" - }, - { - "internalType": "uint8[]", - "name": "packData", - "type": "uint8[]" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "verifyPackSigner", - "outputs": [ - { - "internalType": "address", - "name": "signer", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6080604052600f805460ff19908116600a179091556710a741a462780000601255600060135567d02ab486cedc0000601555670de0b6b3a7640000601655601780549091166032179055601a80546201010062ffffff199091161790553480156200006957600080fd5b506040518060400160405280600a81526020016947616d6d61436172647360b01b815250604051806040016040528060068152602001654e4f465f474360d01b8152508160009081620000bd9190620001ea565b506001620000cc8282620001ea565b505050620000e9620000e3620000ef60201b60201c565b620000f3565b620002b6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200017057607f821691505b6020821081036200019157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001e557600081815260208120601f850160051c81016020861015620001c05750805b601f850160051c820191505b81811015620001e157828155600101620001cc565b5050505b505050565b81516001600160401b0381111562000206576200020662000145565b6200021e816200021784546200015b565b8462000197565b602080601f8311600181146200025657600084156200023d5750858301515b600019600386901b1c1916600185901b178555620001e1565b600085815260208120601f198616915b82811015620002875788860151825594840194600190910190840162000266565b5085821015620002a65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615fb480620002c66000396000f3fe608060405234801561001057600080fd5b506004361061046a5760003560e01c80637cf86b721161024c578063a419811d11610146578063dbfc05cf116100c3578063e606df8711610087578063e606df8714610a6c578063e985e9c514610a7f578063eb12d61e14610abb578063f2fde38b14610ace578063f98fd28314610ae157600080fd5b8063dbfc05cf14610a22578063ddb975e814610a35578063dec3f6d914610a48578063e1883c6e14610a50578063e5db587a14610a6357600080fd5b8063c3461c071161010a578063c3461c07146109d9578063c87b56dd146109e1578063cafaa473146109f4578063d322b56314610a07578063d780c47714610a1a57600080fd5b8063a419811d1461097a578063ad1684fa1461098d578063b88d4fde146109a0578063ba6c0fbc146109b3578063bf400a6a146109c657600080fd5b80638dc10768116101d45780639abc8320116101985780639abc8320146109305780639c7f707f146109385780639f4415d81461094b578063a1af8ad414610954578063a22cb4651461096757600080fd5b80638dc107681461088f5780639038f41414610901578063915656641461090957806395d89b411461091b578063968841351461092357600080fd5b8063809eb3551161021b578063809eb3551461082157806384c4bd4b1461084f578063886eb60f146108585780638bf670c81461086b5780638da5cb5b1461087e57600080fd5b80637cf86b72146107af5780637de99bd9146107c25780637df73e27146107d55780637e50fa8f1461080157600080fd5b80632ca699e7116103685780635dde20d8116102e557806370a08231116102a957806370a082311461075b578063715018a61461076e5780637155a3ac146107765780637232d7d4146107895780637ce65f7b1461079c57600080fd5b80635dde20d8146106ef5780635e31ce481461070f5780636352211e1461072257806368cc5bc1146107355780637065cb481461074857600080fd5b806342842e0e1161032c57806342842e0e1461069a57806342966c68146106ad578063483823e8146106c0578063511b9307146106c95780635312ea8e146106dc57600080fd5b80632ca699e71461061e5780632f54bf6e146106315780632f9e026a1461065d57806330f5cc5814610670578063335c8b631461068357600080fd5b806314cca36a116103f657806320965a5f116103ba57806320965a5f146105c5578063225a993b146105d857806323b872dd146105e5578063241a08fe146105f8578063267b841d1461060b57600080fd5b806314cca36a14610566578063155e2f92146105795780631585cc4e1461058c578063173825d91461059f578063203335f6146105b257600080fd5b8063081812fc1161043d578063081812fc146104ed578063095ea7b3146105185780630e316ab71461052d578063128916dc146105405780631306952c1461055357600080fd5b806301ffc9a71461046f57806303900270146104975780630435dcaf146104b657806306fdde03146104d8575b600080fd5b61048261047d366004614e78565b610af4565b60405190151581526020015b60405180910390f35b600f546104a49060ff1681565b60405160ff909116815260200161048e565b6104c96104c4366004614eaa565b610b05565b60405161048e93929190614f05565b6104e0610ec2565b60405161048e9190614fc0565b6105006104fb366004614fd3565b610f54565b6040516001600160a01b03909116815260200161048e565b61052b610526366004614fec565b610f7b565b005b61052b61053b366004614eaa565b611095565b61052b61054e366004614eaa565b61113a565b610500610561366004615109565b6111e4565b600a54610500906001600160a01b031681565b61052b6105873660046151a3565b611272565b6104a461059a3660046151a3565b6112ee565b61052b6105ad366004614eaa565b611345565b61052b6105c03660046152a2565b6113bb565b61052b6105d3366004615398565b61150b565b6017546104a49060ff1681565b61052b6105f33660046153d9565b611c20565b61052b61060636600461541a565b611c52565b61052b610619366004615109565b611c97565b61052b61062c3660046151a3565b611caa565b61048261063f366004614eaa565b6001600160a01b03166000908152600b602052604090205460ff1690565b600854610500906001600160a01b031681565b61052b61067e366004615435565b611f1e565b61068c60125481565b60405190815260200161048e565b61052b6106a83660046153d9565b6121b4565b61052b6106bb366004614fd3565b6121cf565b61068c60165481565b601a546104829062010000900460ff1681565b61052b6106ea366004614fd3565b612200565b61068c6106fd366004614fd3565b601c6020526000908152604090205481565b61052b61071d366004614fd3565b612307565b610500610730366004614fd3565b612372565b61052b61074336600461549b565b6123d2565b61052b610756366004614eaa565b61241d565b61068c610769366004614eaa565b612493565b61052b612519565b61052b6107843660046151a3565b61252d565b61052b610797366004614fd3565b61258c565b61052b6107aa36600461541a565b612628565b61068c6107bd366004614eaa565b6126c1565b61052b6107d0366004615538565b612705565b6104826107e3366004614eaa565b6001600160a01b03166000908152600e602052604090205460ff1690565b61068c61080f366004614eaa565b601d6020526000908152604090205481565b6104a461082f3660046151a3565b601e60209081526000928352604080842090915290825290205460ff1681565b61068c60105481565b6104826108663660046151a3565b6128cc565b6104826108793660046151a3565b612925565b6007546001600160a01b0316610500565b6108d161089d366004614fd3565b601b6020526000908152604090208054600182015460028301546003909301549192909160ff808316926101009004169085565b6040805195865260208601949094529115159284019290925260ff9091166060830152608082015260a00161048e565b610482612952565b601a5461048290610100900460ff1681565b6104e0612df4565b601a546104829060ff1681565b6104e0612e03565b61052b6109463660046155d2565b612e91565b61068c60155481565b61052b610962366004615635565b612f0b565b61052b610975366004615689565b6132a6565b61052b610988366004614eaa565b6132b5565b61052b61099b3660046156c2565b613353565b61052b6109ae36600461571a565b613667565b61052b6109c1366004614fd3565b613699565b61052b6109d436600461541a565b613743565b6104e061398b565b6104e06109ef366004614fd3565b613998565b61052b610a02366004614eaa565b6139a3565b600954610500906001600160a01b031681565b61068c613a46565b61052b610a3036600461549b565b613a6e565b61052b610a43366004614eaa565b613ab0565b6104e0613b53565b61052b610a5e366004614fd3565b613b60565b61068c60135481565b601154610500906001600160a01b031681565b610482610a8d366004615799565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61052b610ac9366004614eaa565b613bb6565b61052b610adc366004614eaa565b613c2c565b61052b610aef36600461549b565b613ca2565b6000610aff82613ceb565b92915050565b60408051607a808252610f608201909252606091829182916000919060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f40803683370190505090506000805b60798160ff1611610ceb576001600160a01b0389166000908152601e6020908152604080832060ff80861685529252909120541615610cd95780858360ff1681518110610bd157610bd16157c7565b60ff9283166020918202929092018101919091526001600160a01b038b166000908152601e82526040808220858516835290925220548551908216918691908516908110610c2157610c216157c7565b60ff90921660209283029190910190910152600954604051632edb5fcf60e01b81526001600160a01b0390911690632edb5fcf90610c65908c9085906004016157dd565b602060405180830381865afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca691906157f9565b838360ff1681518110610cbb57610cbb6157c7565b9115156020928302919091019091015281610cd58161582c565b9250505b80610ce38161582c565b915050610b82565b5060008160ff166001600160401b03811115610d0957610d09615018565b604051908082528060200260200182016040528015610d32578160200160208202803683370190505b50905060008260ff166001600160401b03811115610d5257610d52615018565b604051908082528060200260200182016040528015610d7b578160200160208202803683370190505b50905060008360ff166001600160401b03811115610d9b57610d9b615018565b604051908082528060200260200182016040528015610dc4578160200160208202803683370190505b50905060005b8460ff168160ff161015610eb057878160ff1681518110610ded57610ded6157c7565b6020026020010151848260ff1681518110610e0a57610e0a6157c7565b60ff9283166020918202929092010152875188918316908110610e2f57610e2f6157c7565b6020026020010151838260ff1681518110610e4c57610e4c6157c7565b60ff9283166020918202929092010152865187918316908110610e7157610e716157c7565b6020026020010151828260ff1681518110610e8e57610e8e6157c7565b9115156020928302919091019091015280610ea88161582c565b915050610dca565b50919a90995090975095505050505050565b606060008054610ed19061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054610efd9061584b565b8015610f4a5780601f10610f1f57610100808354040283529160200191610f4a565b820191906000526020600020905b815481529060010190602001808311610f2d57829003601f168201915b5050505050905090565b6000610f5f82613d10565b506000908152600460205260409020546001600160a01b031690565b6000610f8682612372565b9050806001600160a01b0316836001600160a01b031603610ff85760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061101457506110148133610a8d565b6110865760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610fef565b6110908383613d6f565b505050565b336000908152600b602052604090205460ff166110c45760405162461bcd60e51b8152600401610fef90615885565b604051630982088f60e41b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063982088f0906044015b60006040518083038186803b15801561111f57600080fd5b505af4158015611133573d6000803e3d6000fd5b5050505050565b336000908152600b602052604090205460ff166111695760405162461bcd60e51b8152600401610fef90615885565b6001600160a01b03811661118f5760405162461bcd60e51b8152600401610fef906158ab565b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f538b3425a321783393ad250db10356b8b3523ef29a40de015c5218213de0ead0906020015b60405180910390a150565b6040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b9061122690339089908990899089906004016158d1565b602060405180830381865af4158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190615958565b90505b949350505050565b6009546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610fef90615975565b6001600160a01b0382166000908152601e6020908152604080832060ff8086168552925282208054909116916112d18361582c565b91906101000a81548160ff021916908360ff160217905550505050565b60006001600160a01b0383166113165760405162461bcd60e51b8152600401610fef906158ab565b506001600160a01b03919091166000908152601e6020908152604080832060ff94851684529091529020541690565b336000908152600b602052604090205460ff166113745760405162461bcd60e51b8152600401610fef90615885565b604051632dd92c6960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a490604401611107565b60008560ff161161140e5760405162461bcd60e51b815260206004820152601760248201527f7061636b732071747479206d757374206265203e20302e0000000000000000006044820152606401610fef565b600f5460ff90811690861611156114765760405162461bcd60e51b815260206004820152602660248201527f7061636b732071747479206d757374206265203c206d6178207174747920616c6044820152653637bbb2b21760d11b6064820152608401610fef565b60005b8560ff168160ff161015611503576114f133868360ff16815181106114a0576114a06157c7565b6020026020010151868460ff16815181106114bd576114bd6157c7565b602002602001015186868660ff168181106114da576114da6157c7565b90506020028101906114ec91906159a4565b613ddd565b806114fb8161582c565b915050611479565b505050505050565b336000908152601e602090815260408083206079845290915290205460ff166115825760405162461bcd60e51b8152602060048201526024808201527f596f7520646f6573206e6f74206861766520616e79206275726e696e6720616c604482015263313ab69760e11b6064820152608401610fef565b336000908152601d602052604081205461159d9083906159ea565b90506000603c82106116d457601654601354101561160d5760405162461bcd60e51b815260206004820152602760248201527f496e73756666696369656e742066756e647320286275726e43617264732062616044820152663630b731b2949760c91b6064820152608401610fef565b6011546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a91906159fd565b90506016548110156116ce5760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e64732028636f6e7472616374292e00006044820152606401610fef565b60019150505b600954604051630cdb311760e01b815233600482015260009182916001600160a01b0390911690630cdb311790602401602060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906159fd565b11905060005b60ff81168511156119ad57336000908152601e6020526040812081888860ff861681811061177b5761177b6157c7565b9050602002016020810190611790919061541a565b60ff908116825260208201929092526040016000205416116117c45760405162461bcd60e51b8152600401610fef90615a16565b8115611920576009546001600160a01b0316632edb5fcf33888860ff86168181106117f1576117f16157c7565b9050602002016020810190611806919061541a565b6040518363ffffffff1660e01b81526004016118239291906157dd565b602060405180830381865afa158015611840573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186491906157f9565b1561192057336000908152601e60205260408120600291888860ff8616818110611890576118906157c7565b90506020020160208101906118a5919061541a565b60ff90811682526020820192909252604001600020541610156119205760405162461bcd60e51b815260206004820152602d60248201527f596f752063616e6e6f74206275726e20616e79206d6f726520636f706965732060448201526c37b3103a3434b99031b0b9321760991b6064820152608401610fef565b336000908152601e6020526040812090878760ff8516818110611945576119456157c7565b905060200201602081019061195a919061541a565b60ff9081168252602082019290925260400160009081208054909216919061198183615a4d565b91906101000a81548160ff021916908360ff1602179055505080806119a59061582c565b91505061174b565b50336000908152601d6020526040812080548692906119cd9084906159ea565b90915550506040517fdbcda3b6d52a6f69c85189ca3f35e5be8a2e3d052fea47f656ff00384b0c47b190611a0690339088908890615aa0565b60405180910390a1811561113357336000908152601e60209081526040808320607984529091528120805460ff1691611a3e83615a4d565b91906101000a81548160ff021916908360ff16021790555050611aef3360198054611a689061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a949061584b565b8015611ae15780601f10611ab657610100808354040283529160200191611ae1565b820191906000526020600020905b815481529060010190602001808311611ac457829003601f168201915b505050505060796002614274565b60165460136000828254611b039190615ac5565b909155505060115460165460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8191906157f9565b50600a5460405163fa8213d360e01b81523360048201526001600160a01b039091169063fa8213d390602401600060405180830381600087803b158015611bc757600080fd5b505af1158015611bdb573d6000803e3d6000fd5b505050507f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa336002604051611c119291906157dd565b60405180910390a15050505050565b611c2b335b826142d7565b611c475760405162461bcd60e51b8152600401610fef90615ad8565b611090838383614355565b336000908152600b602052604090205460ff16611c815760405162461bcd60e51b8152600401610fef90615885565b600f805460ff191660ff92909216919091179055565b611ca43385858585613ddd565b50505050565b336000908152601e6020908152604080832060ff808616855292529091205416611ce65760405162461bcd60e51b8152600401610fef90615a16565b336001600160a01b03831603611d3e5760405162461bcd60e51b815260206004820152601960248201527f4f776e207472616e73666572206e6f7420616c6c6f7765642e000000000000006044820152606401610fef565b6001600160a01b038216611d645760405162461bcd60e51b8152600401610fef906158ab565b601a5462010000900460ff1615611e3957600954604051632edb5fcf60e01b81526000916001600160a01b031690632edb5fcf90611da890339086906004016157dd565b602060405180830381865afa158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de991906157f9565b336000908152601e6020908152604080832060ff80881685529252909120549192506001911611811580611e1a5750805b611e365760405162461bcd60e51b8152600401610fef90615b25565b50505b336000908152601e6020908152604080832060ff808616855292528220805490911691611e6583615a4d565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0384166000908152601e602090815260408083208685168452909152812080549092169250611eb48361582c565b82546101009290920a60ff818102199093169183160217909155604080513381526001600160a01b0386166020820152918416908201527f1b6e5f928a38f442936bbdf4696f128a543b8e43730594344a66c028d0b9c3da91506060015b60405180910390a15050565b336000908152600b602052604090205460ff16611f4d5760405162461bcd60e51b8152600401610fef90615885565b6008546040516380f2540b60e01b8152600481018490526001600160a01b038581166024830152909116906380f2540b90604401600060405180830381600087803b158015611f9b57600080fd5b505af1158015611faf573d6000803e3d6000fd5b505050506006601254611fc29190615b5c565b601254611fcf9190615ac5565b60136000828254611fe091906159ea565b90915550600090505b81518160ff161015611ca457818160ff168151811061200a5761200a6157c7565b602002602001015160ff1660781461205857611389601c6000848460ff1681518110612038576120386157c7565b602002602001015160ff1681526020019081526020016000205410612089565b6078600052601c6020527f6ec98d8d39cd9309189aa82063f91dfcf737ce38f7d69eacedb0acfc0872981c54610bb9115b6120d55760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063617264496e76656e746f727920706f736974696f6e00006044820152606401610fef565b601c6000838360ff16815181106120ee576120ee6157c7565b602002602001015160ff168152602001908152602001600020600081548092919061211890615b7e565b90915550506001600160a01b0384166000908152601e602052604081208351909190849060ff851690811061214f5761214f6157c7565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff16809291906121889061582c565b91906101000a81548160ff021916908360ff1602179055505080806121ac9061582c565b915050611fe9565b61109083838360405180602001604052806000815250613667565b6121d833611c25565b6121f45760405162461bcd60e51b8152600401610fef90615ad8565b6121fd816144b9565b50565b336000908152600b602052604090205460ff1661222f5760405162461bcd60e51b8152600401610fef90615885565b8061223930612493565b101561224457600080fd5b80601360008282546122569190615ac5565b909155505060115460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d091906157f9565b5060408051338152602081018390527f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f2091016111d9565b6008546001600160a01b031633146123585760405162461bcd60e51b815260206004820152601460248201527327b7363c903830b1b5b99031b7b73a3930b1ba1760611b6044820152606401610fef565b806013600082825461236a91906159ea565b909155505050565b6000818152600260205260408120546001600160a01b031680610aff5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fef565b336000908152600b602052604090205460ff166124015760405162461bcd60e51b8152600401610fef90615885565b601a8054911515620100000262ff000019909216919091179055565b336000908152600b602052604090205460ff1661244c5760405162461bcd60e51b8152600401610fef90615885565b604051632d35e2b960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401611107565b60006001600160a01b0382166124fd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610fef565b506001600160a01b031660009081526003602052604090205490565b6125216144c2565b61252b600061451c565b565b6009546001600160a01b031633146125575760405162461bcd60e51b8152600401610fef90615975565b6001600160a01b0382166000908152601e6020908152604080832060ff8086168552925282208054909116916112d183615a4d565b336000908152600b602052604090205460ff166125bb5760405162461bcd60e51b8152600401610fef90615885565b600081116126235760405162461bcd60e51b815260206004820152602f60248201527f546865207072697a6520666f7220636f6d706c6574696e672074686520616c6260448201526e3ab69036bab9ba103132901f10181760891b6064820152608401610fef565b601555565b336000908152600b602052604090205460ff166126575760405162461bcd60e51b8152600401610fef90615885565b60648160ff1611156126ab5760405162461bcd60e51b815260206004820152601e60248201527f5468652025206d757374206265206265747765656e20302026203130302e00006044820152606401610fef565b6017805460ff191660ff92909216919091179055565b60006001600160a01b0382166126e95760405162461bcd60e51b8152600401610fef906158ab565b506001600160a01b03166000908152601d602052604090205490565b61270d6144c2565b336000908152600b60205260409020805460ff19166001179055601180546001600160a01b038881166001600160a01b03199283161790925560088054888416908316179055600a80548684169083161790556009805492871692909116919091179055601461277d8382615bdd565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526203132360ec1b8183015283518085018552600681526523173539b7b760d11b8184015293516127da9460149493909101615c9c565b604051602081830303815290604052601890816127f79190615bdd565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526231323160e81b8183015283518085018552600681526523173539b7b760d11b8184015293516128549460149493909101615c9c565b604051602081830303815290604052601990816128719190615bdd565b506001600160a01b0381166000908152600e60205260408120805460ff191660011790555b607a8110156128c3576000818152601c6020526040902060019055806128bb81615b7e565b915050612896565b50505050505050565b60006001600160a01b0383166128f45760405162461bcd60e51b8152600401610fef906158ab565b506001600160a01b03919091166000908152601e6020908152604080832060ff948516845290915290205416151590565b6009546000906001600160a01b031633146128f45760405162461bcd60e51b8152600401610fef90615975565b336000908152601e602090815260408083206078845290915281205460ff166129bd5760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f74206861766520616e7920616c62756d2e000000006044820152606401610fef565b6015546013541015612a225760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742066756e647320286f70656e2d7061636b73206260448201526730b630b731b2949760c11b6064820152608401610fef565b6011546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f91906159fd565b9050601554811015612ae35760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e64732028636f6e7472616374292e00006044820152606401610fef565b6000805b60788160ff1611612b7857336000908152601e6020908152604080832060ff80861685529252822054169003612b205760019150612b78565b336000908152601e6020908152604080832060ff808616855292528220805490911691612b4c83615a4d565b91906101000a81548160ff021916908360ff160217905550508080612b709061582c565b915050612ae7565b508015612bc75760405162461bcd60e51b815260206004820152601860248201527f4d75737420636f6d706c6574652074686520616c62756d2e00000000000000006044820152606401610fef565b612c5f3360188054612bd89061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054612c049061584b565b8015612c515780601f10612c2657610100808354040283529160200191612c51565b820191906000526020600020905b815481529060010190602001808311612c3457829003601f168201915b505050505060786002614274565b60115460155460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd891906157f9565b5060155460136000828254612ced9190615ac5565b9091555050600954604051633f27a03f60e21b81523360048201526000916001600160a01b03169063fc9e80fc906024016020604051808303816000875af1158015612d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6191906157f9565b905080612db05760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742072656d6f76652075736572206f6666657273000000000000006044820152606401610fef565b7f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa336001604051612de29291906157dd565b60405180910390a16001935050505090565b606060018054610ed19061584b565b60148054612e109061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054612e3c9061584b565b8015612e895780601f10612e5e57610100808354040283529160200191612e89565b820191906000526020600020905b815481529060010190602001808311612e6c57829003601f168201915b505050505081565b336000908152600b602052604090205460ff16612ec05760405162461bcd60e51b8152600401610fef90615885565b6018612ecc8382615bdd565b506019612ed98282615bdd565b507fabfd337ac5625b7dc2ddd3d3bd465fb1dec15322eeeed81032268b337880bec68282604051611f12929190615d4b565b336001600160a01b03841603612f6e5760405162461bcd60e51b815260206004820152602260248201527f596f752063616e6e6f742073656e6420636172647320746f20796f757273656c604482015261331760f11b6064820152608401610fef565b6001600160a01b038316612f945760405162461bcd60e51b8152600401610fef906158ab565b60005b60ff811682111561326357336000908152601e6020526040812081858560ff8616818110612fc757612fc76157c7565b9050602002016020810190612fdc919061541a565b60ff908116825260208201929092526040016000205416116130105760405162461bcd60e51b8152600401610fef90615a16565b336000908152601e6020526040812090848460ff8516818110613035576130356157c7565b905060200201602081019061304a919061541a565b60ff9081168252602082019290925260400160009081208054909216919061307183615a4d565b91906101000a81548160ff021916908360ff16021790555050601e6000856001600160a01b03166001600160a01b03168152602001908152602001600020600084848460ff168181106130c6576130c66157c7565b90506020020160208101906130db919061541a565b60ff908116825260208201929092526040016000908120805490921691906131028361582c565b91906101000a81548160ff021916908360ff16021790555050601a60029054906101000a900460ff1615613251576009546000906001600160a01b0316632edb5fcf33868660ff871681811061315a5761315a6157c7565b905060200201602081019061316f919061541a565b6040518363ffffffff1660e01b815260040161318c9291906157dd565b602060405180830381865afa1580156131a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cd91906157f9565b336000908152601e602052604081209192509060019082878760ff88168181106131f9576131f96157c7565b905060200201602081019061320e919061541a565b60ff9081168252602082019290925260400160002054161190508115806132325750805b61324e5760405162461bcd60e51b8152600401610fef90615b25565b50505b8061325b8161582c565b915050612f97565b507f368eb521419fe880268b0d75c05eaa2da7ae9ccf468be86a848f7054366d2b9b338484846040516132999493929190615d79565b60405180910390a1505050565b6132b133838361456e565b5050565b336000908152600b602052604090205460ff166132e45760405162461bcd60e51b8152600401610fef90615885565b60005b60798160ff16116132b1576001600160a01b0382166000908152601e6020908152604080832060ff8086168552925282208054909116916133278361582c565b91906101000a81548160ff021916908360ff16021790555050808061334b9061582c565b9150506132e7565b6009546001600160a01b0316331461337d5760405162461bcd60e51b8152600401610fef90615975565b6001600160a01b0384166133a35760405162461bcd60e51b8152600401610fef906158ab565b6001600160a01b0382166133c95760405162461bcd60e51b8152600401610fef906158ab565b6001600160a01b0384166000908152601e6020908152604080832060ff80881685529252909120541661344d5760405162461bcd60e51b815260206004820152602660248201527f55736572202866726f6d2920646f6573206e6f74206861766520636172642028604482015265333937b6949760d11b6064820152608401610fef565b6001600160a01b0382166000908152601e6020908152604080832060ff8086168552925290912054166134cd5760405162461bcd60e51b815260206004820152602260248201527f557365722028746f2920646f6573206e6f74206861766520636172642028746f604482015261149760f11b6064820152608401610fef565b6001600160a01b0384166000908152601e6020908152604080832060ff80881685529252822080549091169161350283615a4d565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0384166000908152601e6020908152604080832088851684529091528120805490921692506135518361582c565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0384166000908152601e6020908152604080832086851684529091528120805490921692506135a083615a4d565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0386166000908152601e6020908152604080832086851684529091528120805490921692506135ef8361582c565b82546101009290920a60ff818102199093169183160217909155604080516001600160a01b038881168252861660208201528683169181019190915290831660608201527f52819375a02768cb5083d7b729260c6db2309fcb5c9161201ada89d30d00d524915060800160405180910390a150505050565b61367133836142d7565b61368d5760405162461bcd60e51b8152600401610fef90615ad8565b611ca48484848461463c565b336000908152600b602052604090205460ff166136c85760405162461bcd60e51b8152600401610fef90615885565b6000811161373e5760405162461bcd60e51b815260206004820152603760248201527f546865207072697a6520666f7220636f6d706c6574696e67207468652062757260448201527f6e696e6720616c62756d206d757374206265203e20302e0000000000000000006064820152608401610fef565b601655565b336000908152601e6020908152604080832060ff80861685529252909120541661377f5760405162461bcd60e51b8152600401610fef90615a16565b601a54610100900460ff161561385357600954604051632edb5fcf60e01b81526000916001600160a01b031690632edb5fcf906137c290339086906004016157dd565b602060405180830381865afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380391906157f9565b336000908152601e6020908152604080832060ff808816855292529091205491925060019116118115806138345750805b6138505760405162461bcd60e51b8152600401610fef90615b25565b50505b336000908152601e6020908152604080832060ff80861685529252822080549091169161387f83615a4d565b91906101000a81548160ff021916908360ff1602179055505060006014604051806040016040528060018152602001602f60f81b8152508360ff1673__$7e24fea74dbc7efffb723a34f6ecd87681$__636900a3ae90916040518263ffffffff1660e01b81526004016138f491815260200190565b600060405180830381865af4158015613911573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139399190810190615db0565b60405180604001604052806005815260200164173539b7b760d91b81525060405160200161396a9493929190615c9c565b60405160208183030381529060405290506132b133828460ff166001614274565b60188054612e109061584b565b6060610aff8261466f565b336000908152600b602052604090205460ff166139d25760405162461bcd60e51b8152600401610fef90615885565b6001600160a01b0381166139f85760405162461bcd60e51b8152600401610fef906158ab565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f906020016111d9565b601354601754600091606491613a5f919060ff16615e1d565b613a699190615b5c565b905090565b336000908152600b602052604090205460ff16613a9d5760405162461bcd60e51b8152600401610fef90615885565b601a805460ff1916911515919091179055565b336000908152600b602052604090205460ff16613adf5760405162461bcd60e51b8152600401610fef90615885565b6001600160a01b038116613b055760405162461bcd60e51b8152600401610fef906158ab565b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa202906020016111d9565b60198054612e109061584b565b6008546001600160a01b03163314613bb15760405162461bcd60e51b815260206004820152601460248201527327b7363c903830b1b5b99031b7b73a3930b1ba1760611b6044820152606401610fef565b601255565b336000908152600b602052604090205460ff16613be55760405162461bcd60e51b8152600401610fef90615885565b604051633b9db68960e11b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063773b6d1290604401611107565b613c346144c2565b6001600160a01b038116613c995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610fef565b6121fd8161451c565b336000908152600b602052604090205460ff16613cd15760405162461bcd60e51b8152600401610fef90615885565b601a80549115156101000261ff0019909216919091179055565b60006001600160e01b03198216632483248360e11b1480610aff5750610aff82614777565b6000818152600260205260409020546001600160a01b03166121fd5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fef565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613da482612372565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60085460405163d3e6a7ad60e01b8152600481018690526001600160a01b0387811692169063d3e6a7ad90602401602060405180830381865afa158015613e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4c9190615958565b6001600160a01b031614613ea25760405162461bcd60e51b815260206004820152601760248201527f54686973207061636b206973206e6f7420796f7572732e0000000000000000006044820152606401610fef565b600f835110613ee95760405162461bcd60e51b815260206004820152601360248201527210d85c99081b1a5b5a5d08195e18d959591959606a1b6044820152606401610fef565b601a5460ff1615613fd9576040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b90613f3690339089908990899089906004016158d1565b602060405180830381865af4158015613f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f779190615958565b6001600160a01b0381166000908152600e602052604090205490915060ff16613fd75760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039b4b3b730ba3ab9329760711b6044820152606401610fef565b505b6008546040516380f2540b60e01b8152600481018690526001600160a01b038781166024830152909116906380f2540b90604401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50505050600660125461404e9190615b5c565b60125461405b9190615ac5565b6013600082825461406c91906159ea565b90915550600090505b83518160ff16101561424057838160ff1681518110614096576140966157c7565b602002602001015160ff166078146140e457611389601c6000868460ff16815181106140c4576140c46157c7565b602002602001015160ff1681526020019081526020016000205410614115565b6078600052601c6020527f6ec98d8d39cd9309189aa82063f91dfcf737ce38f7d69eacedb0acfc0872981c54610bb9115b6141615760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063617264496e76656e746f727920706f736974696f6e00006044820152606401610fef565b601c6000858360ff168151811061417a5761417a6157c7565b602002602001015160ff16815260200190815260200160002060008154809291906141a490615b7e565b90915550506001600160a01b0386166000908152601e602052604081208551909190869060ff85169081106141db576141db6157c7565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff16809291906142149061582c565b91906101000a81548160ff021916908360ff1602179055505080806142389061582c565b915050614075565b507fbabe8f5e83e93ab103ddf917b4292a19335a5128b3530bedd896a681cdd945e3858486604051611c1193929190615e34565b6010546000818152601b6020526040902081815560018101849055600201805461ff00191661010060ff8516021790556142ae85826147c7565b6142b881856147e1565b6001601060008282546142cb91906159ea565b90915550505050505050565b6000806142e383612372565b9050806001600160a01b0316846001600160a01b0316148061432a57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061126a5750836001600160a01b031661434384610f54565b6001600160a01b031614949350505050565b826001600160a01b031661436882612372565b6001600160a01b03161461438e5760405162461bcd60e51b8152600401610fef90615e68565b6001600160a01b0382166143f05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610fef565b826001600160a01b031661440382612372565b6001600160a01b0316146144295760405162461bcd60e51b8152600401610fef90615e68565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6121fd816148a5565b6007546001600160a01b0316331461252b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fef565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036145cf5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610fef565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b614647848484614355565b614653848484846148e5565b611ca45760405162461bcd60e51b8152600401610fef90615ead565b606061467a82613d10565b600082815260066020526040812080546146939061584b565b80601f01602080910402602001604051908101604052809291908181526020018280546146bf9061584b565b801561470c5780601f106146e15761010080835404028352916020019161470c565b820191906000526020600020905b8154815290600101906020018083116146ef57829003601f168201915b50505050509050600061472a60408051602081019091526000815290565b9050805160000361473c575092915050565b81511561476e578082604051602001614756929190615eff565b60405160208183030381529060405292505050919050565b61126a846149e3565b60006001600160e01b031982166380ac58cd60e01b14806147a857506001600160e01b03198216635b5e139f60e01b145b80610aff57506301ffc9a760e01b6001600160e01b0319831614610aff565b6132b1828260405180602001604052806000815250614a57565b6000828152600260205260409020546001600160a01b031661485c5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610fef565b60008281526006602052604090206148748282615bdd565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001611f12565b6148ae81614a8a565b600081815260066020526040902080546148c79061584b565b1590506121fd5760008181526006602052604081206121fd91614e14565b60006001600160a01b0384163b156149db57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614929903390899088908890600401615f2e565b6020604051808303816000875af1925050508015614964575060408051601f3d908101601f1916820190925261496191810190615f61565b60015b6149c1573d808015614992576040519150601f19603f3d011682016040523d82523d6000602084013e614997565b606091505b5080516000036149b95760405162461bcd60e51b8152600401610fef90615ead565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061126a565b50600161126a565b60606149ee82613d10565b6000614a0560408051602081019091526000815290565b90506000815111614a255760405180602001604052806000815250614a50565b80614a2f84614b1f565b604051602001614a40929190615eff565b6040516020818303038152906040525b9392505050565b614a618383614bb1565b614a6e60008484846148e5565b6110905760405162461bcd60e51b8152600401610fef90615ead565b6000614a9582612372565b9050614aa082612372565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606000614b2c83614d3c565b60010190506000816001600160401b03811115614b4b57614b4b615018565b6040519080825280601f01601f191660200182016040528015614b75576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084614b7f57509392505050565b6001600160a01b038216614c075760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610fef565b6000818152600260205260409020546001600160a01b031615614c6c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fef565b6000818152600260205260409020546001600160a01b031615614cd15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fef565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614d7b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614da7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614dc557662386f26fc10000830492506010015b6305f5e1008310614ddd576305f5e100830492506008015b6127108310614df157612710830492506004015b60648310614e03576064830492506002015b600a8310610aff5760010192915050565b508054614e209061584b565b6000825580601f10614e30575050565b601f0160209004906000526020600020908101906121fd91905b80821115614e5e5760008155600101614e4a565b5090565b6001600160e01b0319811681146121fd57600080fd5b600060208284031215614e8a57600080fd5b8135614a5081614e62565b6001600160a01b03811681146121fd57600080fd5b600060208284031215614ebc57600080fd5b8135614a5081614e95565b600081518084526020808501945080840160005b83811015614efa57815160ff1687529582019590820190600101614edb565b509495945050505050565b606081526000614f186060830186614ec7565b602083820381850152614f2b8287614ec7565b8481036040860152855180825282870193509082019060005b81811015614f62578451151583529383019391830191600101614f44565b509098975050505050505050565b60005b83811015614f8b578181015183820152602001614f73565b50506000910152565b60008151808452614fac816020860160208601614f70565b601f01601f19169290920160200192915050565b602081526000614a506020830184614f94565b600060208284031215614fe557600080fd5b5035919050565b60008060408385031215614fff57600080fd5b823561500a81614e95565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561505657615056615018565b604052919050565b60006001600160401b0382111561507757615077615018565b5060051b60200190565b803560ff8116811461509257600080fd5b919050565b600082601f8301126150a857600080fd5b813560206150bd6150b88361505e565b61502e565b82815260059290921b840181019181810190868411156150dc57600080fd5b8286015b848110156150fe576150f181615081565b83529183019183016150e0565b509695505050505050565b6000806000806060858703121561511f57600080fd5b8435935060208501356001600160401b038082111561513d57600080fd5b61514988838901615097565b9450604087013591508082111561515f57600080fd5b818701915087601f83011261517357600080fd5b81358181111561518257600080fd5b88602082850101111561519457600080fd5b95989497505060200194505050565b600080604083850312156151b657600080fd5b82356151c181614e95565b91506151cf60208401615081565b90509250929050565b600082601f8301126151e957600080fd5b813560206151f96150b88361505e565b82815260059290921b8401810191818101908684111561521857600080fd5b8286015b848110156150fe5780356001600160401b0381111561523b5760008081fd5b6152498986838b0101615097565b84525091830191830161521c565b60008083601f84011261526957600080fd5b5081356001600160401b0381111561528057600080fd5b6020830191508360208260051b850101111561529b57600080fd5b9250929050565b6000806000806000608086880312156152ba57600080fd5b6152c386615081565b94506020808701356001600160401b03808211156152e057600080fd5b818901915089601f8301126152f457600080fd5b81356153026150b88261505e565b81815260059190911b8301840190848101908c83111561532157600080fd5b938501935b8285101561533f57843582529385019390850190615326565b98505050604089013592508083111561535757600080fd5b6153638a848b016151d8565b9550606089013592508083111561537957600080fd5b505061538788828901615257565b969995985093965092949392505050565b600080602083850312156153ab57600080fd5b82356001600160401b038111156153c157600080fd5b6153cd85828601615257565b90969095509350505050565b6000806000606084860312156153ee57600080fd5b83356153f981614e95565b9250602084013561540981614e95565b929592945050506040919091013590565b60006020828403121561542c57600080fd5b614a5082615081565b60008060006060848603121561544a57600080fd5b833561545581614e95565b92506020840135915060408401356001600160401b0381111561547757600080fd5b61548386828701615097565b9150509250925092565b80151581146121fd57600080fd5b6000602082840312156154ad57600080fd5b8135614a508161548d565b60006001600160401b038211156154d1576154d1615018565b50601f01601f191660200190565b60006154ed6150b8846154b8565b905082815283838301111561550157600080fd5b828260208301376000602084830101529392505050565b600082601f83011261552957600080fd5b614a50838335602085016154df565b60008060008060008060c0878903121561555157600080fd5b863561555c81614e95565b9550602087013561556c81614e95565b9450604087013561557c81614e95565b9350606087013561558c81614e95565b925060808701356001600160401b038111156155a757600080fd5b6155b389828a01615518565b92505060a08701356155c481614e95565b809150509295509295509295565b600080604083850312156155e557600080fd5b82356001600160401b03808211156155fc57600080fd5b61560886838701615518565b9350602085013591508082111561561e57600080fd5b5061562b85828601615518565b9150509250929050565b60008060006040848603121561564a57600080fd5b833561565581614e95565b925060208401356001600160401b0381111561567057600080fd5b61567c86828701615257565b9497909650939450505050565b6000806040838503121561569c57600080fd5b82356156a781614e95565b915060208301356156b78161548d565b809150509250929050565b600080600080608085870312156156d857600080fd5b84356156e381614e95565b93506156f160208601615081565b9250604085013561570181614e95565b915061570f60608601615081565b905092959194509250565b6000806000806080858703121561573057600080fd5b843561573b81614e95565b9350602085013561574b81614e95565b92506040850135915060608501356001600160401b0381111561576d57600080fd5b8501601f8101871361577e57600080fd5b61578d878235602084016154df565b91505092959194509250565b600080604083850312156157ac57600080fd5b82356157b781614e95565b915060208301356156b781614e95565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392909216825260ff16602082015260400190565b60006020828403121561580b57600080fd5b8151614a508161548d565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361584257615842615816565b60010192915050565b600181811c9082168061585f57607f821691505b60208210810361587f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b6020808252600c908201526b3130b21030b2323932b9b99760a11b604082015260600190565b6001600160a01b0386168152602080820186905260806040830181905285519083018190526000918681019160a0850190845b8181101561592357845160ff1683529383019391830191600101615904565b505084810360608601528581528587838301376000818701830152601f909501601f1916909401909301979650505050505050565b60006020828403121561596a57600080fd5b8151614a5081614e95565b60208082526015908201527427b7363c9037b33332b9399031b7b73a3930b1ba1760591b604082015260600190565b6000808335601e198436030181126159bb57600080fd5b8301803591506001600160401b038211156159d557600080fd5b60200191503681900382131561529b57600080fd5b80820180821115610aff57610aff615816565b600060208284031215615a0f57600080fd5b5051919050565b6020808252601c908201527f596f7520646f6573206e6f742068617665207468697320636172642e00000000604082015260600190565b600060ff821680615a6057615a60615816565b6000190192915050565b8183526000602080850194508260005b85811015614efa5760ff615a8d83615081565b1687529582019590820190600101615a7a565b6001600160a01b03841681526040602082018190526000906112679083018486615a6a565b81810381811115610aff57610aff615816565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526017908201527f5468697320636172642068617320616e206f666665722e000000000000000000604082015260600190565b600082615b7957634e487b7160e01b600052601260045260246000fd5b500490565b600060018201615b9057615b90615816565b5060010190565b601f82111561109057600081815260208120601f850160051c81016020861015615bbe5750805b601f850160051c820191505b8181101561150357828155600101615bca565b81516001600160401b03811115615bf657615bf6615018565b615c0a81615c04845461584b565b84615b97565b602080601f831160018114615c3f5760008415615c275750858301515b600019600386901b1c1916600185901b178555611503565b600085815260208120601f198616915b82811015615c6e57888601518255948401946001909101908401615c4f565b5085821015615c8c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808654615caa8161584b565b60018281168015615cc25760018114615cd757615d06565b60ff1984168752821515830287019450615d06565b8a60005260208060002060005b85811015615cfd5781548a820152908401908201615ce4565b50505082870194505b505050508551615d1a818360208a01614f70565b8551910190615d2d818360208901614f70565b8451910190615d40818360208801614f70565b019695505050505050565b604081526000615d5e6040830185614f94565b8281036020840152615d708185614f94565b95945050505050565b6001600160a01b03858116825284166020820152606060408201819052600090615da69083018486615a6a565b9695505050505050565b600060208284031215615dc257600080fd5b81516001600160401b03811115615dd857600080fd5b8201601f81018413615de957600080fd5b8051615df76150b8826154b8565b818152856020838501011115615e0c57600080fd5b615d70826020830160208601614f70565b8082028115828204841417610aff57610aff615816565b6001600160a01b0384168152606060208201819052600090615e5890830185614ec7565b9050826040830152949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351615f11818460208801614f70565b835190830190615f25818360208801614f70565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615da690830184614f94565b600060208284031215615f7357600080fd5b8151614a5081614e6256fea26469706673582212208ff8d7b5090c37bcec4ee454063a81cffc1364cff8658d383f8cefc59f4a6b1964736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061046a5760003560e01c80637cf86b721161024c578063a419811d11610146578063dbfc05cf116100c3578063e606df8711610087578063e606df8714610a6c578063e985e9c514610a7f578063eb12d61e14610abb578063f2fde38b14610ace578063f98fd28314610ae157600080fd5b8063dbfc05cf14610a22578063ddb975e814610a35578063dec3f6d914610a48578063e1883c6e14610a50578063e5db587a14610a6357600080fd5b8063c3461c071161010a578063c3461c07146109d9578063c87b56dd146109e1578063cafaa473146109f4578063d322b56314610a07578063d780c47714610a1a57600080fd5b8063a419811d1461097a578063ad1684fa1461098d578063b88d4fde146109a0578063ba6c0fbc146109b3578063bf400a6a146109c657600080fd5b80638dc10768116101d45780639abc8320116101985780639abc8320146109305780639c7f707f146109385780639f4415d81461094b578063a1af8ad414610954578063a22cb4651461096757600080fd5b80638dc107681461088f5780639038f41414610901578063915656641461090957806395d89b411461091b578063968841351461092357600080fd5b8063809eb3551161021b578063809eb3551461082157806384c4bd4b1461084f578063886eb60f146108585780638bf670c81461086b5780638da5cb5b1461087e57600080fd5b80637cf86b72146107af5780637de99bd9146107c25780637df73e27146107d55780637e50fa8f1461080157600080fd5b80632ca699e7116103685780635dde20d8116102e557806370a08231116102a957806370a082311461075b578063715018a61461076e5780637155a3ac146107765780637232d7d4146107895780637ce65f7b1461079c57600080fd5b80635dde20d8146106ef5780635e31ce481461070f5780636352211e1461072257806368cc5bc1146107355780637065cb481461074857600080fd5b806342842e0e1161032c57806342842e0e1461069a57806342966c68146106ad578063483823e8146106c0578063511b9307146106c95780635312ea8e146106dc57600080fd5b80632ca699e71461061e5780632f54bf6e146106315780632f9e026a1461065d57806330f5cc5814610670578063335c8b631461068357600080fd5b806314cca36a116103f657806320965a5f116103ba57806320965a5f146105c5578063225a993b146105d857806323b872dd146105e5578063241a08fe146105f8578063267b841d1461060b57600080fd5b806314cca36a14610566578063155e2f92146105795780631585cc4e1461058c578063173825d91461059f578063203335f6146105b257600080fd5b8063081812fc1161043d578063081812fc146104ed578063095ea7b3146105185780630e316ab71461052d578063128916dc146105405780631306952c1461055357600080fd5b806301ffc9a71461046f57806303900270146104975780630435dcaf146104b657806306fdde03146104d8575b600080fd5b61048261047d366004614e78565b610af4565b60405190151581526020015b60405180910390f35b600f546104a49060ff1681565b60405160ff909116815260200161048e565b6104c96104c4366004614eaa565b610b05565b60405161048e93929190614f05565b6104e0610ec2565b60405161048e9190614fc0565b6105006104fb366004614fd3565b610f54565b6040516001600160a01b03909116815260200161048e565b61052b610526366004614fec565b610f7b565b005b61052b61053b366004614eaa565b611095565b61052b61054e366004614eaa565b61113a565b610500610561366004615109565b6111e4565b600a54610500906001600160a01b031681565b61052b6105873660046151a3565b611272565b6104a461059a3660046151a3565b6112ee565b61052b6105ad366004614eaa565b611345565b61052b6105c03660046152a2565b6113bb565b61052b6105d3366004615398565b61150b565b6017546104a49060ff1681565b61052b6105f33660046153d9565b611c20565b61052b61060636600461541a565b611c52565b61052b610619366004615109565b611c97565b61052b61062c3660046151a3565b611caa565b61048261063f366004614eaa565b6001600160a01b03166000908152600b602052604090205460ff1690565b600854610500906001600160a01b031681565b61052b61067e366004615435565b611f1e565b61068c60125481565b60405190815260200161048e565b61052b6106a83660046153d9565b6121b4565b61052b6106bb366004614fd3565b6121cf565b61068c60165481565b601a546104829062010000900460ff1681565b61052b6106ea366004614fd3565b612200565b61068c6106fd366004614fd3565b601c6020526000908152604090205481565b61052b61071d366004614fd3565b612307565b610500610730366004614fd3565b612372565b61052b61074336600461549b565b6123d2565b61052b610756366004614eaa565b61241d565b61068c610769366004614eaa565b612493565b61052b612519565b61052b6107843660046151a3565b61252d565b61052b610797366004614fd3565b61258c565b61052b6107aa36600461541a565b612628565b61068c6107bd366004614eaa565b6126c1565b61052b6107d0366004615538565b612705565b6104826107e3366004614eaa565b6001600160a01b03166000908152600e602052604090205460ff1690565b61068c61080f366004614eaa565b601d6020526000908152604090205481565b6104a461082f3660046151a3565b601e60209081526000928352604080842090915290825290205460ff1681565b61068c60105481565b6104826108663660046151a3565b6128cc565b6104826108793660046151a3565b612925565b6007546001600160a01b0316610500565b6108d161089d366004614fd3565b601b6020526000908152604090208054600182015460028301546003909301549192909160ff808316926101009004169085565b6040805195865260208601949094529115159284019290925260ff9091166060830152608082015260a00161048e565b610482612952565b601a5461048290610100900460ff1681565b6104e0612df4565b601a546104829060ff1681565b6104e0612e03565b61052b6109463660046155d2565b612e91565b61068c60155481565b61052b610962366004615635565b612f0b565b61052b610975366004615689565b6132a6565b61052b610988366004614eaa565b6132b5565b61052b61099b3660046156c2565b613353565b61052b6109ae36600461571a565b613667565b61052b6109c1366004614fd3565b613699565b61052b6109d436600461541a565b613743565b6104e061398b565b6104e06109ef366004614fd3565b613998565b61052b610a02366004614eaa565b6139a3565b600954610500906001600160a01b031681565b61068c613a46565b61052b610a3036600461549b565b613a6e565b61052b610a43366004614eaa565b613ab0565b6104e0613b53565b61052b610a5e366004614fd3565b613b60565b61068c60135481565b601154610500906001600160a01b031681565b610482610a8d366004615799565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61052b610ac9366004614eaa565b613bb6565b61052b610adc366004614eaa565b613c2c565b61052b610aef36600461549b565b613ca2565b6000610aff82613ceb565b92915050565b60408051607a808252610f608201909252606091829182916000919060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f40803683370190505090506000805b60798160ff1611610ceb576001600160a01b0389166000908152601e6020908152604080832060ff80861685529252909120541615610cd95780858360ff1681518110610bd157610bd16157c7565b60ff9283166020918202929092018101919091526001600160a01b038b166000908152601e82526040808220858516835290925220548551908216918691908516908110610c2157610c216157c7565b60ff90921660209283029190910190910152600954604051632edb5fcf60e01b81526001600160a01b0390911690632edb5fcf90610c65908c9085906004016157dd565b602060405180830381865afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca691906157f9565b838360ff1681518110610cbb57610cbb6157c7565b9115156020928302919091019091015281610cd58161582c565b9250505b80610ce38161582c565b915050610b82565b5060008160ff166001600160401b03811115610d0957610d09615018565b604051908082528060200260200182016040528015610d32578160200160208202803683370190505b50905060008260ff166001600160401b03811115610d5257610d52615018565b604051908082528060200260200182016040528015610d7b578160200160208202803683370190505b50905060008360ff166001600160401b03811115610d9b57610d9b615018565b604051908082528060200260200182016040528015610dc4578160200160208202803683370190505b50905060005b8460ff168160ff161015610eb057878160ff1681518110610ded57610ded6157c7565b6020026020010151848260ff1681518110610e0a57610e0a6157c7565b60ff9283166020918202929092010152875188918316908110610e2f57610e2f6157c7565b6020026020010151838260ff1681518110610e4c57610e4c6157c7565b60ff9283166020918202929092010152865187918316908110610e7157610e716157c7565b6020026020010151828260ff1681518110610e8e57610e8e6157c7565b9115156020928302919091019091015280610ea88161582c565b915050610dca565b50919a90995090975095505050505050565b606060008054610ed19061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054610efd9061584b565b8015610f4a5780601f10610f1f57610100808354040283529160200191610f4a565b820191906000526020600020905b815481529060010190602001808311610f2d57829003601f168201915b5050505050905090565b6000610f5f82613d10565b506000908152600460205260409020546001600160a01b031690565b6000610f8682612372565b9050806001600160a01b0316836001600160a01b031603610ff85760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061101457506110148133610a8d565b6110865760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610fef565b6110908383613d6f565b505050565b336000908152600b602052604090205460ff166110c45760405162461bcd60e51b8152600401610fef90615885565b604051630982088f60e41b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063982088f0906044015b60006040518083038186803b15801561111f57600080fd5b505af4158015611133573d6000803e3d6000fd5b5050505050565b336000908152600b602052604090205460ff166111695760405162461bcd60e51b8152600401610fef90615885565b6001600160a01b03811661118f5760405162461bcd60e51b8152600401610fef906158ab565b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f538b3425a321783393ad250db10356b8b3523ef29a40de015c5218213de0ead0906020015b60405180910390a150565b6040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b9061122690339089908990899089906004016158d1565b602060405180830381865af4158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190615958565b90505b949350505050565b6009546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610fef90615975565b6001600160a01b0382166000908152601e6020908152604080832060ff8086168552925282208054909116916112d18361582c565b91906101000a81548160ff021916908360ff160217905550505050565b60006001600160a01b0383166113165760405162461bcd60e51b8152600401610fef906158ab565b506001600160a01b03919091166000908152601e6020908152604080832060ff94851684529091529020541690565b336000908152600b602052604090205460ff166113745760405162461bcd60e51b8152600401610fef90615885565b604051632dd92c6960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a490604401611107565b60008560ff161161140e5760405162461bcd60e51b815260206004820152601760248201527f7061636b732071747479206d757374206265203e20302e0000000000000000006044820152606401610fef565b600f5460ff90811690861611156114765760405162461bcd60e51b815260206004820152602660248201527f7061636b732071747479206d757374206265203c206d6178207174747920616c6044820152653637bbb2b21760d11b6064820152608401610fef565b60005b8560ff168160ff161015611503576114f133868360ff16815181106114a0576114a06157c7565b6020026020010151868460ff16815181106114bd576114bd6157c7565b602002602001015186868660ff168181106114da576114da6157c7565b90506020028101906114ec91906159a4565b613ddd565b806114fb8161582c565b915050611479565b505050505050565b336000908152601e602090815260408083206079845290915290205460ff166115825760405162461bcd60e51b8152602060048201526024808201527f596f7520646f6573206e6f74206861766520616e79206275726e696e6720616c604482015263313ab69760e11b6064820152608401610fef565b336000908152601d602052604081205461159d9083906159ea565b90506000603c82106116d457601654601354101561160d5760405162461bcd60e51b815260206004820152602760248201527f496e73756666696369656e742066756e647320286275726e43617264732062616044820152663630b731b2949760c91b6064820152608401610fef565b6011546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a91906159fd565b90506016548110156116ce5760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e64732028636f6e7472616374292e00006044820152606401610fef565b60019150505b600954604051630cdb311760e01b815233600482015260009182916001600160a01b0390911690630cdb311790602401602060405180830381865afa158015611721573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174591906159fd565b11905060005b60ff81168511156119ad57336000908152601e6020526040812081888860ff861681811061177b5761177b6157c7565b9050602002016020810190611790919061541a565b60ff908116825260208201929092526040016000205416116117c45760405162461bcd60e51b8152600401610fef90615a16565b8115611920576009546001600160a01b0316632edb5fcf33888860ff86168181106117f1576117f16157c7565b9050602002016020810190611806919061541a565b6040518363ffffffff1660e01b81526004016118239291906157dd565b602060405180830381865afa158015611840573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186491906157f9565b1561192057336000908152601e60205260408120600291888860ff8616818110611890576118906157c7565b90506020020160208101906118a5919061541a565b60ff90811682526020820192909252604001600020541610156119205760405162461bcd60e51b815260206004820152602d60248201527f596f752063616e6e6f74206275726e20616e79206d6f726520636f706965732060448201526c37b3103a3434b99031b0b9321760991b6064820152608401610fef565b336000908152601e6020526040812090878760ff8516818110611945576119456157c7565b905060200201602081019061195a919061541a565b60ff9081168252602082019290925260400160009081208054909216919061198183615a4d565b91906101000a81548160ff021916908360ff1602179055505080806119a59061582c565b91505061174b565b50336000908152601d6020526040812080548692906119cd9084906159ea565b90915550506040517fdbcda3b6d52a6f69c85189ca3f35e5be8a2e3d052fea47f656ff00384b0c47b190611a0690339088908890615aa0565b60405180910390a1811561113357336000908152601e60209081526040808320607984529091528120805460ff1691611a3e83615a4d565b91906101000a81548160ff021916908360ff16021790555050611aef3360198054611a689061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a949061584b565b8015611ae15780601f10611ab657610100808354040283529160200191611ae1565b820191906000526020600020905b815481529060010190602001808311611ac457829003601f168201915b505050505060796002614274565b60165460136000828254611b039190615ac5565b909155505060115460165460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8191906157f9565b50600a5460405163fa8213d360e01b81523360048201526001600160a01b039091169063fa8213d390602401600060405180830381600087803b158015611bc757600080fd5b505af1158015611bdb573d6000803e3d6000fd5b505050507f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa336002604051611c119291906157dd565b60405180910390a15050505050565b611c2b335b826142d7565b611c475760405162461bcd60e51b8152600401610fef90615ad8565b611090838383614355565b336000908152600b602052604090205460ff16611c815760405162461bcd60e51b8152600401610fef90615885565b600f805460ff191660ff92909216919091179055565b611ca43385858585613ddd565b50505050565b336000908152601e6020908152604080832060ff808616855292529091205416611ce65760405162461bcd60e51b8152600401610fef90615a16565b336001600160a01b03831603611d3e5760405162461bcd60e51b815260206004820152601960248201527f4f776e207472616e73666572206e6f7420616c6c6f7765642e000000000000006044820152606401610fef565b6001600160a01b038216611d645760405162461bcd60e51b8152600401610fef906158ab565b601a5462010000900460ff1615611e3957600954604051632edb5fcf60e01b81526000916001600160a01b031690632edb5fcf90611da890339086906004016157dd565b602060405180830381865afa158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de991906157f9565b336000908152601e6020908152604080832060ff80881685529252909120549192506001911611811580611e1a5750805b611e365760405162461bcd60e51b8152600401610fef90615b25565b50505b336000908152601e6020908152604080832060ff808616855292528220805490911691611e6583615a4d565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0384166000908152601e602090815260408083208685168452909152812080549092169250611eb48361582c565b82546101009290920a60ff818102199093169183160217909155604080513381526001600160a01b0386166020820152918416908201527f1b6e5f928a38f442936bbdf4696f128a543b8e43730594344a66c028d0b9c3da91506060015b60405180910390a15050565b336000908152600b602052604090205460ff16611f4d5760405162461bcd60e51b8152600401610fef90615885565b6008546040516380f2540b60e01b8152600481018490526001600160a01b038581166024830152909116906380f2540b90604401600060405180830381600087803b158015611f9b57600080fd5b505af1158015611faf573d6000803e3d6000fd5b505050506006601254611fc29190615b5c565b601254611fcf9190615ac5565b60136000828254611fe091906159ea565b90915550600090505b81518160ff161015611ca457818160ff168151811061200a5761200a6157c7565b602002602001015160ff1660781461205857611389601c6000848460ff1681518110612038576120386157c7565b602002602001015160ff1681526020019081526020016000205410612089565b6078600052601c6020527f6ec98d8d39cd9309189aa82063f91dfcf737ce38f7d69eacedb0acfc0872981c54610bb9115b6120d55760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063617264496e76656e746f727920706f736974696f6e00006044820152606401610fef565b601c6000838360ff16815181106120ee576120ee6157c7565b602002602001015160ff168152602001908152602001600020600081548092919061211890615b7e565b90915550506001600160a01b0384166000908152601e602052604081208351909190849060ff851690811061214f5761214f6157c7565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff16809291906121889061582c565b91906101000a81548160ff021916908360ff1602179055505080806121ac9061582c565b915050611fe9565b61109083838360405180602001604052806000815250613667565b6121d833611c25565b6121f45760405162461bcd60e51b8152600401610fef90615ad8565b6121fd816144b9565b50565b336000908152600b602052604090205460ff1661222f5760405162461bcd60e51b8152600401610fef90615885565b8061223930612493565b101561224457600080fd5b80601360008282546122569190615ac5565b909155505060115460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d091906157f9565b5060408051338152602081018390527f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f2091016111d9565b6008546001600160a01b031633146123585760405162461bcd60e51b815260206004820152601460248201527327b7363c903830b1b5b99031b7b73a3930b1ba1760611b6044820152606401610fef565b806013600082825461236a91906159ea565b909155505050565b6000818152600260205260408120546001600160a01b031680610aff5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fef565b336000908152600b602052604090205460ff166124015760405162461bcd60e51b8152600401610fef90615885565b601a8054911515620100000262ff000019909216919091179055565b336000908152600b602052604090205460ff1661244c5760405162461bcd60e51b8152600401610fef90615885565b604051632d35e2b960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401611107565b60006001600160a01b0382166124fd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610fef565b506001600160a01b031660009081526003602052604090205490565b6125216144c2565b61252b600061451c565b565b6009546001600160a01b031633146125575760405162461bcd60e51b8152600401610fef90615975565b6001600160a01b0382166000908152601e6020908152604080832060ff8086168552925282208054909116916112d183615a4d565b336000908152600b602052604090205460ff166125bb5760405162461bcd60e51b8152600401610fef90615885565b600081116126235760405162461bcd60e51b815260206004820152602f60248201527f546865207072697a6520666f7220636f6d706c6574696e672074686520616c6260448201526e3ab69036bab9ba103132901f10181760891b6064820152608401610fef565b601555565b336000908152600b602052604090205460ff166126575760405162461bcd60e51b8152600401610fef90615885565b60648160ff1611156126ab5760405162461bcd60e51b815260206004820152601e60248201527f5468652025206d757374206265206265747765656e20302026203130302e00006044820152606401610fef565b6017805460ff191660ff92909216919091179055565b60006001600160a01b0382166126e95760405162461bcd60e51b8152600401610fef906158ab565b506001600160a01b03166000908152601d602052604090205490565b61270d6144c2565b336000908152600b60205260409020805460ff19166001179055601180546001600160a01b038881166001600160a01b03199283161790925560088054888416908316179055600a80548684169083161790556009805492871692909116919091179055601461277d8382615bdd565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526203132360ec1b8183015283518085018552600681526523173539b7b760d11b8184015293516127da9460149493909101615c9c565b604051602081830303815290604052601890816127f79190615bdd565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526231323160e81b8183015283518085018552600681526523173539b7b760d11b8184015293516128549460149493909101615c9c565b604051602081830303815290604052601990816128719190615bdd565b506001600160a01b0381166000908152600e60205260408120805460ff191660011790555b607a8110156128c3576000818152601c6020526040902060019055806128bb81615b7e565b915050612896565b50505050505050565b60006001600160a01b0383166128f45760405162461bcd60e51b8152600401610fef906158ab565b506001600160a01b03919091166000908152601e6020908152604080832060ff948516845290915290205416151590565b6009546000906001600160a01b031633146128f45760405162461bcd60e51b8152600401610fef90615975565b336000908152601e602090815260408083206078845290915281205460ff166129bd5760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f74206861766520616e7920616c62756d2e000000006044820152606401610fef565b6015546013541015612a225760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742066756e647320286f70656e2d7061636b73206260448201526730b630b731b2949760c11b6064820152608401610fef565b6011546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f91906159fd565b9050601554811015612ae35760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e64732028636f6e7472616374292e00006044820152606401610fef565b6000805b60788160ff1611612b7857336000908152601e6020908152604080832060ff80861685529252822054169003612b205760019150612b78565b336000908152601e6020908152604080832060ff808616855292528220805490911691612b4c83615a4d565b91906101000a81548160ff021916908360ff160217905550508080612b709061582c565b915050612ae7565b508015612bc75760405162461bcd60e51b815260206004820152601860248201527f4d75737420636f6d706c6574652074686520616c62756d2e00000000000000006044820152606401610fef565b612c5f3360188054612bd89061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054612c049061584b565b8015612c515780601f10612c2657610100808354040283529160200191612c51565b820191906000526020600020905b815481529060010190602001808311612c3457829003601f168201915b505050505060786002614274565b60115460155460405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd891906157f9565b5060155460136000828254612ced9190615ac5565b9091555050600954604051633f27a03f60e21b81523360048201526000916001600160a01b03169063fc9e80fc906024016020604051808303816000875af1158015612d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6191906157f9565b905080612db05760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f742072656d6f76652075736572206f6666657273000000000000006044820152606401610fef565b7f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa336001604051612de29291906157dd565b60405180910390a16001935050505090565b606060018054610ed19061584b565b60148054612e109061584b565b80601f0160208091040260200160405190810160405280929190818152602001828054612e3c9061584b565b8015612e895780601f10612e5e57610100808354040283529160200191612e89565b820191906000526020600020905b815481529060010190602001808311612e6c57829003601f168201915b505050505081565b336000908152600b602052604090205460ff16612ec05760405162461bcd60e51b8152600401610fef90615885565b6018612ecc8382615bdd565b506019612ed98282615bdd565b507fabfd337ac5625b7dc2ddd3d3bd465fb1dec15322eeeed81032268b337880bec68282604051611f12929190615d4b565b336001600160a01b03841603612f6e5760405162461bcd60e51b815260206004820152602260248201527f596f752063616e6e6f742073656e6420636172647320746f20796f757273656c604482015261331760f11b6064820152608401610fef565b6001600160a01b038316612f945760405162461bcd60e51b8152600401610fef906158ab565b60005b60ff811682111561326357336000908152601e6020526040812081858560ff8616818110612fc757612fc76157c7565b9050602002016020810190612fdc919061541a565b60ff908116825260208201929092526040016000205416116130105760405162461bcd60e51b8152600401610fef90615a16565b336000908152601e6020526040812090848460ff8516818110613035576130356157c7565b905060200201602081019061304a919061541a565b60ff9081168252602082019290925260400160009081208054909216919061307183615a4d565b91906101000a81548160ff021916908360ff16021790555050601e6000856001600160a01b03166001600160a01b03168152602001908152602001600020600084848460ff168181106130c6576130c66157c7565b90506020020160208101906130db919061541a565b60ff908116825260208201929092526040016000908120805490921691906131028361582c565b91906101000a81548160ff021916908360ff16021790555050601a60029054906101000a900460ff1615613251576009546000906001600160a01b0316632edb5fcf33868660ff871681811061315a5761315a6157c7565b905060200201602081019061316f919061541a565b6040518363ffffffff1660e01b815260040161318c9291906157dd565b602060405180830381865afa1580156131a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cd91906157f9565b336000908152601e602052604081209192509060019082878760ff88168181106131f9576131f96157c7565b905060200201602081019061320e919061541a565b60ff9081168252602082019290925260400160002054161190508115806132325750805b61324e5760405162461bcd60e51b8152600401610fef90615b25565b50505b8061325b8161582c565b915050612f97565b507f368eb521419fe880268b0d75c05eaa2da7ae9ccf468be86a848f7054366d2b9b338484846040516132999493929190615d79565b60405180910390a1505050565b6132b133838361456e565b5050565b336000908152600b602052604090205460ff166132e45760405162461bcd60e51b8152600401610fef90615885565b60005b60798160ff16116132b1576001600160a01b0382166000908152601e6020908152604080832060ff8086168552925282208054909116916133278361582c565b91906101000a81548160ff021916908360ff16021790555050808061334b9061582c565b9150506132e7565b6009546001600160a01b0316331461337d5760405162461bcd60e51b8152600401610fef90615975565b6001600160a01b0384166133a35760405162461bcd60e51b8152600401610fef906158ab565b6001600160a01b0382166133c95760405162461bcd60e51b8152600401610fef906158ab565b6001600160a01b0384166000908152601e6020908152604080832060ff80881685529252909120541661344d5760405162461bcd60e51b815260206004820152602660248201527f55736572202866726f6d2920646f6573206e6f74206861766520636172642028604482015265333937b6949760d11b6064820152608401610fef565b6001600160a01b0382166000908152601e6020908152604080832060ff8086168552925290912054166134cd5760405162461bcd60e51b815260206004820152602260248201527f557365722028746f2920646f6573206e6f74206861766520636172642028746f604482015261149760f11b6064820152608401610fef565b6001600160a01b0384166000908152601e6020908152604080832060ff80881685529252822080549091169161350283615a4d565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0384166000908152601e6020908152604080832088851684529091528120805490921692506135518361582c565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0384166000908152601e6020908152604080832086851684529091528120805490921692506135a083615a4d565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0386166000908152601e6020908152604080832086851684529091528120805490921692506135ef8361582c565b82546101009290920a60ff818102199093169183160217909155604080516001600160a01b038881168252861660208201528683169181019190915290831660608201527f52819375a02768cb5083d7b729260c6db2309fcb5c9161201ada89d30d00d524915060800160405180910390a150505050565b61367133836142d7565b61368d5760405162461bcd60e51b8152600401610fef90615ad8565b611ca48484848461463c565b336000908152600b602052604090205460ff166136c85760405162461bcd60e51b8152600401610fef90615885565b6000811161373e5760405162461bcd60e51b815260206004820152603760248201527f546865207072697a6520666f7220636f6d706c6574696e67207468652062757260448201527f6e696e6720616c62756d206d757374206265203e20302e0000000000000000006064820152608401610fef565b601655565b336000908152601e6020908152604080832060ff80861685529252909120541661377f5760405162461bcd60e51b8152600401610fef90615a16565b601a54610100900460ff161561385357600954604051632edb5fcf60e01b81526000916001600160a01b031690632edb5fcf906137c290339086906004016157dd565b602060405180830381865afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380391906157f9565b336000908152601e6020908152604080832060ff808816855292529091205491925060019116118115806138345750805b6138505760405162461bcd60e51b8152600401610fef90615b25565b50505b336000908152601e6020908152604080832060ff80861685529252822080549091169161387f83615a4d565b91906101000a81548160ff021916908360ff1602179055505060006014604051806040016040528060018152602001602f60f81b8152508360ff1673__$7e24fea74dbc7efffb723a34f6ecd87681$__636900a3ae90916040518263ffffffff1660e01b81526004016138f491815260200190565b600060405180830381865af4158015613911573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139399190810190615db0565b60405180604001604052806005815260200164173539b7b760d91b81525060405160200161396a9493929190615c9c565b60405160208183030381529060405290506132b133828460ff166001614274565b60188054612e109061584b565b6060610aff8261466f565b336000908152600b602052604090205460ff166139d25760405162461bcd60e51b8152600401610fef90615885565b6001600160a01b0381166139f85760405162461bcd60e51b8152600401610fef906158ab565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f906020016111d9565b601354601754600091606491613a5f919060ff16615e1d565b613a699190615b5c565b905090565b336000908152600b602052604090205460ff16613a9d5760405162461bcd60e51b8152600401610fef90615885565b601a805460ff1916911515919091179055565b336000908152600b602052604090205460ff16613adf5760405162461bcd60e51b8152600401610fef90615885565b6001600160a01b038116613b055760405162461bcd60e51b8152600401610fef906158ab565b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa202906020016111d9565b60198054612e109061584b565b6008546001600160a01b03163314613bb15760405162461bcd60e51b815260206004820152601460248201527327b7363c903830b1b5b99031b7b73a3930b1ba1760611b6044820152606401610fef565b601255565b336000908152600b602052604090205460ff16613be55760405162461bcd60e51b8152600401610fef90615885565b604051633b9db68960e11b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063773b6d1290604401611107565b613c346144c2565b6001600160a01b038116613c995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610fef565b6121fd8161451c565b336000908152600b602052604090205460ff16613cd15760405162461bcd60e51b8152600401610fef90615885565b601a80549115156101000261ff0019909216919091179055565b60006001600160e01b03198216632483248360e11b1480610aff5750610aff82614777565b6000818152600260205260409020546001600160a01b03166121fd5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fef565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613da482612372565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60085460405163d3e6a7ad60e01b8152600481018690526001600160a01b0387811692169063d3e6a7ad90602401602060405180830381865afa158015613e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4c9190615958565b6001600160a01b031614613ea25760405162461bcd60e51b815260206004820152601760248201527f54686973207061636b206973206e6f7420796f7572732e0000000000000000006044820152606401610fef565b600f835110613ee95760405162461bcd60e51b815260206004820152601360248201527210d85c99081b1a5b5a5d08195e18d959591959606a1b6044820152606401610fef565b601a5460ff1615613fd9576040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b90613f3690339089908990899089906004016158d1565b602060405180830381865af4158015613f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f779190615958565b6001600160a01b0381166000908152600e602052604090205490915060ff16613fd75760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039b4b3b730ba3ab9329760711b6044820152606401610fef565b505b6008546040516380f2540b60e01b8152600481018690526001600160a01b038781166024830152909116906380f2540b90604401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50505050600660125461404e9190615b5c565b60125461405b9190615ac5565b6013600082825461406c91906159ea565b90915550600090505b83518160ff16101561424057838160ff1681518110614096576140966157c7565b602002602001015160ff166078146140e457611389601c6000868460ff16815181106140c4576140c46157c7565b602002602001015160ff1681526020019081526020016000205410614115565b6078600052601c6020527f6ec98d8d39cd9309189aa82063f91dfcf737ce38f7d69eacedb0acfc0872981c54610bb9115b6141615760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063617264496e76656e746f727920706f736974696f6e00006044820152606401610fef565b601c6000858360ff168151811061417a5761417a6157c7565b602002602001015160ff16815260200190815260200160002060008154809291906141a490615b7e565b90915550506001600160a01b0386166000908152601e602052604081208551909190869060ff85169081106141db576141db6157c7565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff16809291906142149061582c565b91906101000a81548160ff021916908360ff1602179055505080806142389061582c565b915050614075565b507fbabe8f5e83e93ab103ddf917b4292a19335a5128b3530bedd896a681cdd945e3858486604051611c1193929190615e34565b6010546000818152601b6020526040902081815560018101849055600201805461ff00191661010060ff8516021790556142ae85826147c7565b6142b881856147e1565b6001601060008282546142cb91906159ea565b90915550505050505050565b6000806142e383612372565b9050806001600160a01b0316846001600160a01b0316148061432a57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061126a5750836001600160a01b031661434384610f54565b6001600160a01b031614949350505050565b826001600160a01b031661436882612372565b6001600160a01b03161461438e5760405162461bcd60e51b8152600401610fef90615e68565b6001600160a01b0382166143f05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610fef565b826001600160a01b031661440382612372565b6001600160a01b0316146144295760405162461bcd60e51b8152600401610fef90615e68565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6121fd816148a5565b6007546001600160a01b0316331461252b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fef565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036145cf5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610fef565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b614647848484614355565b614653848484846148e5565b611ca45760405162461bcd60e51b8152600401610fef90615ead565b606061467a82613d10565b600082815260066020526040812080546146939061584b565b80601f01602080910402602001604051908101604052809291908181526020018280546146bf9061584b565b801561470c5780601f106146e15761010080835404028352916020019161470c565b820191906000526020600020905b8154815290600101906020018083116146ef57829003601f168201915b50505050509050600061472a60408051602081019091526000815290565b9050805160000361473c575092915050565b81511561476e578082604051602001614756929190615eff565b60405160208183030381529060405292505050919050565b61126a846149e3565b60006001600160e01b031982166380ac58cd60e01b14806147a857506001600160e01b03198216635b5e139f60e01b145b80610aff57506301ffc9a760e01b6001600160e01b0319831614610aff565b6132b1828260405180602001604052806000815250614a57565b6000828152600260205260409020546001600160a01b031661485c5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610fef565b60008281526006602052604090206148748282615bdd565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001611f12565b6148ae81614a8a565b600081815260066020526040902080546148c79061584b565b1590506121fd5760008181526006602052604081206121fd91614e14565b60006001600160a01b0384163b156149db57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614929903390899088908890600401615f2e565b6020604051808303816000875af1925050508015614964575060408051601f3d908101601f1916820190925261496191810190615f61565b60015b6149c1573d808015614992576040519150601f19603f3d011682016040523d82523d6000602084013e614997565b606091505b5080516000036149b95760405162461bcd60e51b8152600401610fef90615ead565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061126a565b50600161126a565b60606149ee82613d10565b6000614a0560408051602081019091526000815290565b90506000815111614a255760405180602001604052806000815250614a50565b80614a2f84614b1f565b604051602001614a40929190615eff565b6040516020818303038152906040525b9392505050565b614a618383614bb1565b614a6e60008484846148e5565b6110905760405162461bcd60e51b8152600401610fef90615ead565b6000614a9582612372565b9050614aa082612372565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606000614b2c83614d3c565b60010190506000816001600160401b03811115614b4b57614b4b615018565b6040519080825280601f01601f191660200182016040528015614b75576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084614b7f57509392505050565b6001600160a01b038216614c075760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610fef565b6000818152600260205260409020546001600160a01b031615614c6c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fef565b6000818152600260205260409020546001600160a01b031615614cd15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fef565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614d7b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614da7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614dc557662386f26fc10000830492506010015b6305f5e1008310614ddd576305f5e100830492506008015b6127108310614df157612710830492506004015b60648310614e03576064830492506002015b600a8310610aff5760010192915050565b508054614e209061584b565b6000825580601f10614e30575050565b601f0160209004906000526020600020908101906121fd91905b80821115614e5e5760008155600101614e4a565b5090565b6001600160e01b0319811681146121fd57600080fd5b600060208284031215614e8a57600080fd5b8135614a5081614e62565b6001600160a01b03811681146121fd57600080fd5b600060208284031215614ebc57600080fd5b8135614a5081614e95565b600081518084526020808501945080840160005b83811015614efa57815160ff1687529582019590820190600101614edb565b509495945050505050565b606081526000614f186060830186614ec7565b602083820381850152614f2b8287614ec7565b8481036040860152855180825282870193509082019060005b81811015614f62578451151583529383019391830191600101614f44565b509098975050505050505050565b60005b83811015614f8b578181015183820152602001614f73565b50506000910152565b60008151808452614fac816020860160208601614f70565b601f01601f19169290920160200192915050565b602081526000614a506020830184614f94565b600060208284031215614fe557600080fd5b5035919050565b60008060408385031215614fff57600080fd5b823561500a81614e95565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561505657615056615018565b604052919050565b60006001600160401b0382111561507757615077615018565b5060051b60200190565b803560ff8116811461509257600080fd5b919050565b600082601f8301126150a857600080fd5b813560206150bd6150b88361505e565b61502e565b82815260059290921b840181019181810190868411156150dc57600080fd5b8286015b848110156150fe576150f181615081565b83529183019183016150e0565b509695505050505050565b6000806000806060858703121561511f57600080fd5b8435935060208501356001600160401b038082111561513d57600080fd5b61514988838901615097565b9450604087013591508082111561515f57600080fd5b818701915087601f83011261517357600080fd5b81358181111561518257600080fd5b88602082850101111561519457600080fd5b95989497505060200194505050565b600080604083850312156151b657600080fd5b82356151c181614e95565b91506151cf60208401615081565b90509250929050565b600082601f8301126151e957600080fd5b813560206151f96150b88361505e565b82815260059290921b8401810191818101908684111561521857600080fd5b8286015b848110156150fe5780356001600160401b0381111561523b5760008081fd5b6152498986838b0101615097565b84525091830191830161521c565b60008083601f84011261526957600080fd5b5081356001600160401b0381111561528057600080fd5b6020830191508360208260051b850101111561529b57600080fd5b9250929050565b6000806000806000608086880312156152ba57600080fd5b6152c386615081565b94506020808701356001600160401b03808211156152e057600080fd5b818901915089601f8301126152f457600080fd5b81356153026150b88261505e565b81815260059190911b8301840190848101908c83111561532157600080fd5b938501935b8285101561533f57843582529385019390850190615326565b98505050604089013592508083111561535757600080fd5b6153638a848b016151d8565b9550606089013592508083111561537957600080fd5b505061538788828901615257565b969995985093965092949392505050565b600080602083850312156153ab57600080fd5b82356001600160401b038111156153c157600080fd5b6153cd85828601615257565b90969095509350505050565b6000806000606084860312156153ee57600080fd5b83356153f981614e95565b9250602084013561540981614e95565b929592945050506040919091013590565b60006020828403121561542c57600080fd5b614a5082615081565b60008060006060848603121561544a57600080fd5b833561545581614e95565b92506020840135915060408401356001600160401b0381111561547757600080fd5b61548386828701615097565b9150509250925092565b80151581146121fd57600080fd5b6000602082840312156154ad57600080fd5b8135614a508161548d565b60006001600160401b038211156154d1576154d1615018565b50601f01601f191660200190565b60006154ed6150b8846154b8565b905082815283838301111561550157600080fd5b828260208301376000602084830101529392505050565b600082601f83011261552957600080fd5b614a50838335602085016154df565b60008060008060008060c0878903121561555157600080fd5b863561555c81614e95565b9550602087013561556c81614e95565b9450604087013561557c81614e95565b9350606087013561558c81614e95565b925060808701356001600160401b038111156155a757600080fd5b6155b389828a01615518565b92505060a08701356155c481614e95565b809150509295509295509295565b600080604083850312156155e557600080fd5b82356001600160401b03808211156155fc57600080fd5b61560886838701615518565b9350602085013591508082111561561e57600080fd5b5061562b85828601615518565b9150509250929050565b60008060006040848603121561564a57600080fd5b833561565581614e95565b925060208401356001600160401b0381111561567057600080fd5b61567c86828701615257565b9497909650939450505050565b6000806040838503121561569c57600080fd5b82356156a781614e95565b915060208301356156b78161548d565b809150509250929050565b600080600080608085870312156156d857600080fd5b84356156e381614e95565b93506156f160208601615081565b9250604085013561570181614e95565b915061570f60608601615081565b905092959194509250565b6000806000806080858703121561573057600080fd5b843561573b81614e95565b9350602085013561574b81614e95565b92506040850135915060608501356001600160401b0381111561576d57600080fd5b8501601f8101871361577e57600080fd5b61578d878235602084016154df565b91505092959194509250565b600080604083850312156157ac57600080fd5b82356157b781614e95565b915060208301356156b781614e95565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392909216825260ff16602082015260400190565b60006020828403121561580b57600080fd5b8151614a508161548d565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361584257615842615816565b60010192915050565b600181811c9082168061585f57607f821691505b60208210810361587f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b6020808252600c908201526b3130b21030b2323932b9b99760a11b604082015260600190565b6001600160a01b0386168152602080820186905260806040830181905285519083018190526000918681019160a0850190845b8181101561592357845160ff1683529383019391830191600101615904565b505084810360608601528581528587838301376000818701830152601f909501601f1916909401909301979650505050505050565b60006020828403121561596a57600080fd5b8151614a5081614e95565b60208082526015908201527427b7363c9037b33332b9399031b7b73a3930b1ba1760591b604082015260600190565b6000808335601e198436030181126159bb57600080fd5b8301803591506001600160401b038211156159d557600080fd5b60200191503681900382131561529b57600080fd5b80820180821115610aff57610aff615816565b600060208284031215615a0f57600080fd5b5051919050565b6020808252601c908201527f596f7520646f6573206e6f742068617665207468697320636172642e00000000604082015260600190565b600060ff821680615a6057615a60615816565b6000190192915050565b8183526000602080850194508260005b85811015614efa5760ff615a8d83615081565b1687529582019590820190600101615a7a565b6001600160a01b03841681526040602082018190526000906112679083018486615a6a565b81810381811115610aff57610aff615816565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526017908201527f5468697320636172642068617320616e206f666665722e000000000000000000604082015260600190565b600082615b7957634e487b7160e01b600052601260045260246000fd5b500490565b600060018201615b9057615b90615816565b5060010190565b601f82111561109057600081815260208120601f850160051c81016020861015615bbe5750805b601f850160051c820191505b8181101561150357828155600101615bca565b81516001600160401b03811115615bf657615bf6615018565b615c0a81615c04845461584b565b84615b97565b602080601f831160018114615c3f5760008415615c275750858301515b600019600386901b1c1916600185901b178555611503565b600085815260208120601f198616915b82811015615c6e57888601518255948401946001909101908401615c4f565b5085821015615c8c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808654615caa8161584b565b60018281168015615cc25760018114615cd757615d06565b60ff1984168752821515830287019450615d06565b8a60005260208060002060005b85811015615cfd5781548a820152908401908201615ce4565b50505082870194505b505050508551615d1a818360208a01614f70565b8551910190615d2d818360208901614f70565b8451910190615d40818360208801614f70565b019695505050505050565b604081526000615d5e6040830185614f94565b8281036020840152615d708185614f94565b95945050505050565b6001600160a01b03858116825284166020820152606060408201819052600090615da69083018486615a6a565b9695505050505050565b600060208284031215615dc257600080fd5b81516001600160401b03811115615dd857600080fd5b8201601f81018413615de957600080fd5b8051615df76150b8826154b8565b818152856020838501011115615e0c57600080fd5b615d70826020830160208601614f70565b8082028115828204841417610aff57610aff615816565b6001600160a01b0384168152606060208201819052600090615e5890830185614ec7565b9050826040830152949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351615f11818460208801614f70565b835190830190615f25818360208801614f70565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615da690830184614f94565b600060208284031215615f7357600080fd5b8151614a5081614e6256fea26469706673582212208ff8d7b5090c37bcec4ee454063a81cffc1364cff8658d383f8cefc59f4a6b1964736f6c63430008140033", - "linkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 5039 - }, - { - "length": 20, - "start": 5727 - }, - { - "length": 20, - "start": 10039 - }, - { - "length": 20, - "start": 16080 - } - ] - }, - "contracts/gamma/libs/LibPackVerifier.sol": { - "LibPackVerifier": [ - { - "length": 20, - "start": 5308 - }, - { - "length": 20, - "start": 16844 - } - ] - }, - "contracts/gamma/libs/LibStringUtils.sol": { - "LibStringUtils": [ - { - "length": 20, - "start": 15234 - } - ] - } - }, - "deployedLinkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 4329 - }, - { - "length": 20, - "start": 5017 - }, - { - "length": 20, - "start": 9329 - }, - { - "length": 20, - "start": 15370 - } - ] - }, - "contracts/gamma/libs/LibPackVerifier.sol": { - "LibPackVerifier": [ - { - "length": 20, - "start": 4598 - }, - { - "length": 20, - "start": 16134 - } - ] - }, - "contracts/gamma/libs/LibStringUtils.sol": { - "LibStringUtils": [ - { - "length": 20, - "start": 14524 - } - ] - } - } -} diff --git a/src/context/abis/GammaOffers.v4.sol/NofGammaOffersV4.json b/src/context/abis/GammaOffers.v4.sol/NofGammaOffersV4.json deleted file mode 100644 index 13fbf43a..00000000 --- a/src/context/abis/GammaOffers.v4.sol/NofGammaOffersV4.json +++ /dev/null @@ -1,942 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NofGammaOffersV4", - "sourceName": "contracts/gamma/GammaOffers.v4.sol", - "abi": [ - { - "anonymous": false, - "inputs": [], - "name": "AllOffersRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaCardsContract", - "type": "address" - } - ], - "name": "NewGammaCardsContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - } - ], - "name": "OfferCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "OfferRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "UserOffersRemoved", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "canAnyUserPublishOffer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "canUserPublishOffer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_value", - "type": "bool" - } - ], - "name": "changeRemoveCardinInventoryWhenOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumberWanted", - "type": "uint8" - }, - { - "internalType": "address", - "name": "offerWallet", - "type": "address" - }, - { - "internalType": "uint8", - "name": "offerCardNumber", - "type": "uint8" - } - ], - "name": "confirmOfferExchange", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - } - ], - "name": "createOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - } - ], - "name": "createOfferWithoUser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "deleteAllOffers", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "gammaCardsContract", - "outputs": [ - { - "internalType": "contract IGammaCardsContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getMaxOffersAllowed", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getMaxOffersByUserAllowed", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "getOfferByIndex", - "outputs": [ - { - "components": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct NofGammaOffersV4.Offer", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - } - ], - "name": "getOfferByOfferId", - "outputs": [ - { - "components": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct NofGammaOffersV4.Offer", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "getOfferByUserAndCardNumber", - "outputs": [ - { - "components": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct NofGammaOffersV4.Offer", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOffers", - "outputs": [ - { - "components": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct NofGammaOffersV4.Offer[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "getOffersByCardNumber", - "outputs": [ - { - "components": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct NofGammaOffersV4.Offer[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "getOffersByCardNumberCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getOffersByUser", - "outputs": [ - { - "components": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct NofGammaOffersV4.Offer[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getOffersByUserCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOffersCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "hasOffer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_cardsContract", - "type": "address" - } - ], - "name": "init", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "offers", - "outputs": [ - { - "internalType": "string", - "name": "offerId", - "type": "string" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "name": "offersByCardNumberCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "offersByUserCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "offersTotalCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "removeOfferByCardNumber", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "removeOfferByUserAndCardNumber", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "removeOffersByUser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_ownerToRemove", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaCardsContract", - "type": "address" - } - ], - "name": "setGammaCardsContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxCardNumbersAllowed", - "type": "uint256" - } - ], - "name": "setMaxCardNumbersAllowed", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxOffersAllowed", - "type": "uint256" - } - ], - "name": "setMaxOffersAllowed", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxOffersByUserAllowed", - "type": "uint256" - } - ], - "name": "setMaxOffersByUserAllowed", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040526113886004556005805560786006556007805460ff191690553480156200002a57600080fd5b5062000036336200003c565b6200008c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b613c1f806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80637594a6ed11610130578063ce7483d5116100b8578063e2b365961161007c578063e2b3659614610515578063e359a0a114610528578063e5e5f7321461053b578063f2fde38b1461054e578063fc9e80fc1461056157600080fd5b8063ce7483d5146104a4578063cf86f8e5146104c7578063d250f03a146104cf578063d827a8f4146104e2578063e02f97231461050257600080fd5b806390222aa1116100ff57806390222aa11461044e5780639618b333146104565780639f91506914610469578063ba79b77b14610489578063c08029e71461049157600080fd5b80637594a6ed146103d35780638400a189146103f35780638a72ea6a146104065780638da5cb5b1461042957600080fd5b80633a027073116101be5780635a919aeb116101825780635a919aeb146103905780635bbfbfd614610399578063619980dc146103ac5780637065cb48146103b8578063715018a6146103cb57600080fd5b80633a0270731461032f5780633e293e16146103425780633ee992ee146103555780634c7a7ad31461036a57806358e57ebb1461037d57600080fd5b806329d3f60b1161020557806329d3f60b146102985780632edb5fcf146102d55780632f54bf6e146102e8578063322fba27146103145780633808dfe71461031c57600080fd5b80630cdb311714610237578063173825d91461025d57806317a1fed91461027257806319ab453c14610285575b600080fd5b61024a6102453660046132bf565b610574565b6040519081526020015b60405180910390f35b61027061026b3660046132bf565b6105c1565b005b610270610280366004613430565b610666565b6102706102933660046132bf565b6106a7565b6102c56102a63660046132bf565b6001600160a01b03166000908152600b60205260409020546005541190565b6040519015158152602001610254565b6102c56102e33660046134b5565b610711565b6102c56102f63660046132bf565b6001600160a01b031660009081526002602052604090205460ff1690565b6102706107d0565b61027061032a3660046134e8565b61097e565b6102c561033d366004613501565b6109b2565b61027061035036600461351c565b6109fa565b61035d610a0b565b6040516102549190613682565b6102706103783660046132bf565b610b9f565b61027061038b3660046136f2565b610c48565b61024a600d5481565b6102c56103a73660046134b5565b610c8a565b600d54600454116102c5565b6102706103c63660046132bf565b610d0a565b610270610d80565b61024a6103e13660046132bf565b600b6020526000908152604090205481565b61035d610401366004613501565b610d94565b6104196104143660046134e8565b610f38565b604051610254949392919061370f565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610254565b60045461024a565b61035d6104643660046132bf565b611010565b61047c6104773660046134b5565b6111d2565b604051610254919061374a565b60055461024a565b61027061049f36600461375d565b6113e1565b61024a6104b2366004613501565b60ff166000908152600c602052604090205490565b600d5461024a565b600154610436906001600160a01b031681565b61024a6104f0366004613501565b600c6020526000908152604090205481565b6102706105103660046134e8565b61186e565b61047c6105233660046137b1565b6118a2565b61047c6105363660046134e8565b611aab565b6102706105493660046134e8565b611c66565b61027061055c3660046132bf565b611c9a565b6102c561056f3660046132bf565b611d13565b60006001600160a01b0382166105a55760405162461bcd60e51b815260040161059c906137e6565b60405180910390fd5b506001600160a01b03166000908152600b602052604090205490565b3360009081526002602052604090205460ff166105f05760405162461bcd60e51b815260040161059c90613810565b604051632dd92c6960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561064b57600080fd5b505af415801561065f573d6000803e3d6000fd5b5050505050565b3360009081526002602052604090205460ff166106955760405162461bcd60e51b815260040161059c90613810565b6106a184848484611fa6565b50505050565b6106af612654565b6001600160a01b0381166106d55760405162461bcd60e51b815260040161059c906137e6565b600180546001600160a01b0319166001600160a01b0392909216919091178155336000908152600260205260409020805460ff19169091179055565b60006001600160a01b0383166107395760405162461bcd60e51b815260040161059c906137e6565b60005b6001600160a01b0384166000908152600b60205260409020548110156107c4576001600160a01b0384166000908152600960205260409020805460ff851691908390811061078c5761078c613836565b600091825260209091206001600590920201015460ff16036107b25760019150506107ca565b806107bc81613862565b91505061073c565b50600090505b92915050565b3360009081526002602052604090205460ff166107ff5760405162461bcd60e51b815260040161059c90613810565b60005b60085481101561093f57600960006008838154811061082357610823613836565b60009182526020808320600360059093020191909101546001600160a01b03168352820192909252604001812061085991613094565b6000600b60006008848154811061087257610872613836565b60009182526020808320600360059093020191909101546001600160a01b0316835282019290925260400181209190915560088054600a929190849081106108bc576108bc613836565b600091825260208083206001600590930201919091015460ff16835282019290925260400181206108ec91613094565b6000600c60006008848154811061090557610905613836565b600091825260208083206001600590930201919091015460ff1683528201929092526040019020558061093781613862565b915050610802565b506000600d81905561095390600890613094565b6040517f47e81efc038e27bb296dec5d44262943d2c2bbec28f461787a9cc53885694cb090600090a1565b3360009081526002602052604090205460ff166109ad5760405162461bcd60e51b815260040161059c90613810565b600555565b6000806109bf33846111d2565b60608101519091506001600160a01b031633146109df5750600092915050565b60006109f23385846000015160006126ae565b949350505050565b610a0683338484611fa6565b505050565b60606008805480602002602001604051908101604052809291908181526020016000905b82821015610b9657838290600052602060002090600502016040518060a0016040529081600082018054610a629061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8e9061387b565b8015610adb5780601f10610ab057610100808354040283529160200191610adb565b820191906000526020600020905b815481529060010190602001808311610abe57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610b5b57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b2c5790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610a2f565b50505050905090565b3360009081526002602052604090205460ff16610bce5760405162461bcd60e51b815260040161059c90613810565b6001600160a01b038116610bf45760405162461bcd60e51b815260040161059c906137e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa9060200160405180910390a150565b3360009081526002602052604090205460ff16610c775760405162461bcd60e51b815260040161059c90613810565b6007805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610cb95760405162461bcd60e51b815260040161059c90613810565b6000610cc584846111d2565b9050836001600160a01b031681606001516001600160a01b031614610cee5760009150506107ca565b6000610d018585846000015160006126ae565b95945050505050565b3360009081526002602052604090205460ff16610d395760405162461bcd60e51b815260040161059c90613810565b604051632d35e2b960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401610633565b610d88612654565b610d926000612824565b565b60ff81166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f2d57838290600052602060002090600502016040518060a0016040529081600082018054610df99061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e259061387b565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610ef257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610ec35790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610dc6565b505050509050919050565b60088181548110610f4857600080fd5b9060005260206000209060050201600091509050806000018054610f6b9061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f979061387b565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b5050505060018301546003840154600490940154929360ff909116926001600160a01b03909116915084565b60606001600160a01b0382166110385760405162461bcd60e51b815260040161059c906137e6565b6001600160a01b038216600090815260096020908152604080832080548251818502810185019093528083529193909284015b82821015610f2d57838290600052602060002090600502016040518060a001604052908160008201805461109e9061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca9061387b565b80156111175780601f106110ec57610100808354040283529160200191611117565b820191906000526020600020905b8154815290600101906020018083116110fa57829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561119757602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116111685790505b505050918352505060038201546001600160a01b0316602080830191909152600490920154604090910152908252600192909201910161106b565b6111da6130b5565b6001600160a01b0383166112005760405162461bcd60e51b815260040161059c906137e6565b6001600160a01b0383166000908152600960209081526040808320600b90925282205490915b818110156113d8578460ff1683828154811061124457611244613836565b600091825260209091206001600590920201015460ff16036113c65782818154811061127257611272613836565b90600052602060002090600502016040518060a001604052908160008201805461129b9061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546112c79061387b565b80156113145780601f106112e957610100808354040283529160200191611314565b820191906000526020600020905b8154815290600101906020018083116112f757829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561139457602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116113655790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015293506107ca92505050565b806113d081613862565b915050611226565b50610d01612874565b60006113ed83836111d2565b9050826001600160a01b031681606001516001600160a01b0316146114705760405162461bcd60e51b815260206004820152603360248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152723ab6b132b9103237b713ba1032bc34b9ba399760691b606482015260840161059c565b604081015180516000036115455760015460405163117ece1960e31b81526001600160a01b0390911690638bf670c8906114b090879089906004016138b5565b6020604051808303816000875af11580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906138d1565b156115405760405162461bcd60e51b815260206004820152601f60248201527f546865207573657220616c726561647920686173207468617420636172642e00604482015260640161059c565b6115f7565b6000805b82518160ff161015611599578660ff16838260ff168151811061156e5761156e613836565b602002602001015160ff16036115875760019150611599565b80611591816138ee565b915050611549565b50806115f55760405162461bcd60e51b815260206004820152602560248201527f5468652063617264206973206e6f7420696e2077616e746564436172644e756d6044820152643132b9399760d91b606482015260840161059c565b505b600061160a8585856000015160016126ae565b90508061166b5760405162461bcd60e51b815260206004820152602960248201527f4572726f722064656c6574696e67206f66666572206166746572207472616e7360448201526866657220636172647360b81b606482015260840161059c565b60015460405163568b427d60e11b81526001600160a01b03898116600483015260ff808a1660248401528882166044840152871660648301529091169063ad1684fa90608401600060405180830381600087803b1580156116cb57600080fd5b505af11580156116df573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c89150611715908a9088906004016138b5565b6020604051808303816000875af1158015611734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175891906138d1565b6117a45760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765206572726f7220776974682077616c6c65742066726f6d00604482015260640161059c565b60015460405163117ece1960e31b81526001600160a01b0390911690638bf670c8906117d69088908a906004016138b5565b6020604051808303816000875af11580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181991906138d1565b6118655760405162461bcd60e51b815260206004820152601d60248201527f45786368616e6765206572726f7220776974682077616c6c657420746f000000604482015260640161059c565b50505050505050565b3360009081526002602052604090205460ff1661189d5760405162461bcd60e51b815260040161059c90613810565b600655565b6118aa6130b5565b60005b600854811015611aa257826040516020016118c8919061390d565b60405160208183030381529060405280519060200120600882815481106118f1576118f1613836565b90600052602060002090600502016000016040516020016119129190613929565b6040516020818303038152906040528051906020012003611a90576008818154811061194057611940613836565b90600052602060002090600502016040518060a00160405290816000820180546119699061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546119959061387b565b80156119e25780601f106119b7576101008083540402835291602001916119e2565b820191906000526020600020905b8154815290600101906020018083116119c557829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611a6257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611a335790505b505050918352505060038201546001600160a01b031660208201526004909101546040909101529392505050565b80611a9a81613862565b9150506118ad565b506107ca612874565b611ab36130b5565b6008548210611b045760405162461bcd60e51b815260206004820152601760248201527f4f6666657220496420646f6573206e6f74206578697374000000000000000000604482015260640161059c565b60088281548110611b1757611b17613836565b90600052602060002090600502016040518060a0016040529081600082018054611b409061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6c9061387b565b8015611bb95780601f10611b8e57610100808354040283529160200191611bb9565b820191906000526020600020905b815481529060010190602001808311611b9c57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611c3957602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611c0a5790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015292915050565b3360009081526002602052604090205460ff16611c955760405162461bcd60e51b815260040161059c90613810565b600455565b611ca2612654565b6001600160a01b038116611d075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059c565b611d1081612824565b50565b6001546000906001600160a01b03163314611d8a5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792067616d6d6120636172647320636f6e74726163742063616e2063616044820152703636103a3434b990333ab731ba34b7b71760791b606482015260840161059c565b6001600160a01b038216611db05760405162461bcd60e51b815260040161059c906137e6565b6001600160a01b0382166000908152600960209081526040808320600b90925282205490915b81811015611f29576000838281548110611df257611df2613836565b90600052602060002090600502016000018054611e0e9061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3a9061387b565b8015611e875780601f10611e5c57610100808354040283529160200191611e87565b820191906000526020600020905b815481529060010190602001808311611e6a57829003601f168201915b505050505090506000848381548110611ea257611ea2613836565b600091825260209091206001600590920201015460ff169050611ec68782846128bd565b611ecf82612c2e565b5060ff81166000908152600c60205260408120805460019290611ef390849061399f565b925050819055506001600d6000828254611f0d919061399f565b9250508190555050508080611f2190613862565b915050611dd6565b506001600160a01b0384166000908152600960205260408120611f4b91613094565b6001600160a01b0384166000818152600b602090815260408083209290925590519182527f65419c67e554142d50c59abd004485123ca498611a223f842e75dd96225ba4c8910160405180910390a16001925050505b919050565b6001546001600160a01b0316611ffe5760405162461bcd60e51b815260206004820152601b60248201527f47616d6d614361726473436f6e7472616374206e6f74207365742e0000000000604482015260640161059c565b6005546001600160a01b0384166000908152600b60205260409020541061207c5760405162461bcd60e51b815260206004820152602c60248201527f5573657220686173207265616368656420746865206d6178696d756d20616c6c60448201526b37bbb2b21037b33332b9399760a11b606482015260840161059c565b600454600d54106120e65760405162461bcd60e51b815260206004820152602e60248201527f546f74616c206f66666572732068617665207265616368656420746865206d6160448201526d3c34b6bab69030b63637bbb2b21760911b606482015260840161059c565b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c89061211990879087906004016138b5565b6020604051808303816000875af1158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c91906138d1565b9050806121ab5760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f742068617665207468617420636172642e00000000604482015260640161059c565b60005b82518160ff161015612254578360ff16838260ff16815181106121d3576121d3613836565b602002602001015160ff16036122425760405162461bcd60e51b815260206004820152602e60248201527f54686520636172644e756d6265722063616e6e6f7420626520696e2077616e7460448201526d32b221b0b932273ab6b132b9399760911b606482015260840161059c565b8061224c816138ee565b9150506121ae565b50600061226185856111d2565b60608101519091506001600160a01b0316156122dd5760405162461bcd60e51b815260206004820152603560248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152743ab6b132b91030b63932b0b23c9032bc34b9ba399760591b606482015260840161059c565b6001600160a01b0385166000908152600b602052604081208054600192906123069084906139b2565b909155505060ff84166000908152600c6020526040812080546001929061232e9084906139b2565b925050819055506001600d600082825461234891906139b2565b90915550506040805160a08101825287815260ff861660208201529081018490526001600160a01b038616606082015242608082015260088054600181018255600091909152815160059091027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3019081906123c49082613a13565b5060208281015160018301805460ff191660ff909216919091179055604083015180516123f792600285019201906130f0565b5060608201516003820180546001600160a01b0319166001600160a01b0392831617905560809092015160049091015585166000908152600960205260409020600880546124479060019061399f565b8154811061245757612457613836565b60009182526020808320845460018101865594845292206005918202909201920201806124848382613ad3565b50600182810154908201805460ff191660ff909216919091179055600280830180546124b39284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560ff84166000908152600a60205260409020600880546125059060019061399f565b8154811061251557612515613836565b60009182526020808320845460018101865594845292206005918202909201920201806125428382613ad3565b50600182810154908201805460ff191660ff909216919091179055600280830180546125719284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560075460ff161561261157600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac906125de90889088906004016138b5565b600060405180830381600087803b1580156125f857600080fd5b505af115801561260c573d6000803e3d6000fd5b505050505b7fed750964f1f81f105e56dfd1121427e0898e7bc23d6c10e92d851a2d35e0cfc585858560405161264493929190613ba6565b60405180910390a1505050505050565b6000546001600160a01b03163314610d925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059c565b60006001600160a01b0385166126d65760405162461bcd60e51b815260040161059c906137e6565b6126e1858585612eab565b6126ec8585856128bd565b6126f583612c2e565b506001600160a01b0385166000908152600b6020526040812080546001929061271f90849061399f565b909155505060ff84166000908152600c6020526040812080546001929061274790849061399f565b925050819055506001600d6000828254612761919061399f565b909155505060075460ff168015612776575081155b156127e057600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f92906127ad90889088906004016138b5565b600060405180830381600087803b1580156127c757600080fd5b505af11580156127db573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f585856040516128119291906138b5565b60405180910390a1506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61287c6130b5565b506040805160c081018252600060a0820181815282526020808301829052835182815290810184529282019290925260608101829052608081019190915290565b60ff82166000908152600a60205260408120905b815481101561065f5761298f8282815481106128ef576128ef613836565b9060005260206000209060050201600001805461290b9061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546129379061387b565b80156129845780601f1061295957610100808354040283529160200191612984565b820191906000526020600020905b81548152906001019060200180831161296757829003601f168201915b50505050508461303b565b15612c1c57846001600160a01b03168282815481106129b0576129b0613836565b60009182526020909120600360059092020101546001600160a01b031614612a405760405162461bcd60e51b815260206004820152603860248201527f5f72656d6f76654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a206f776e657220646f6573206e6f74206d617463682e0000000000000000606482015260840161059c565b8360ff16828281548110612a5657612a56613836565b600091825260209091206001600590920201015460ff1614612ae05760405162461bcd60e51b815260206004820152603d60248201527f5f72656d6f76654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a20636172644e756d62657220646f6573206e6f74206d617463682e000000606482015260840161059c565b8154612aee9060019061399f565b811015612bb05781548290612b059060019061399f565b81548110612b1557612b15613836565b9060005260206000209060050201828281548110612b3557612b35613836565b6000918252602090912060059091020180612b508382613ad3565b50600182810154908201805460ff191660ff90921691909117905560028083018054612b7f9284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101555b81805480612bc057612bc0613bd3565b60008281526020812060001990920191600583020190612be082826131e4565b60018201805460ff19169055612bfa60028301600061321e565b506003810180546001600160a01b03191690556000600490910155905561065f565b80612c2681613862565b9150506128d1565b600080805b600854811015612ea45760085481108015612cff5750612cff60088281548110612c5f57612c5f613836565b90600052602060002090600502016000018054612c7b9061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ca79061387b565b8015612cf45780601f10612cc957610100808354040283529160200191612cf4565b820191906000526020600020905b815481529060010190602001808311612cd757829003601f168201915b50505050508561303b565b15612e925760088181548110612d1757612d17613836565b60009182526020822060059091020190612d3182826131e4565b60018201805460ff19169055612d4b60028301600061321e565b506003810180546001600160a01b0319169055600060049091015560088054612d769060019061399f565b81548110612d8657612d86613836565b906000526020600020906005020160088281548110612da757612da7613836565b6000918252602090912060059091020180612dc28382613ad3565b50600182810154908201805460ff191660ff90921691909117905560028083018054612df19284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101556008805480612e3257612e32613bd3565b60008281526020812060001990920191600583020190612e5282826131e4565b60018201805460ff19169055612e6c60028301600061321e565b506003810180546001600160a01b03191690556000600490910155905560019150612ea4565b80612e9c81613862565b915050612c33565b5092915050565b6001600160a01b0383166000908152600960205260408120905b815481101561065f57612ee38282815481106128ef576128ef613836565b1561302957846001600160a01b0316828281548110612f0457612f04613836565b60009182526020909120600360059092020101546001600160a01b031614612f895760405162461bcd60e51b815260206004820152603260248201527f5f72656d6f76654f6666657246726f6d557365724d617070696e673a206f776e60448201527132b9103237b2b9903737ba1036b0ba31b41760711b606482015260840161059c565b8360ff16828281548110612f9f57612f9f613836565b600091825260209091206001600590920201015460ff1614612ae05760405162461bcd60e51b815260206004820152603760248201527f5f72656d6f76654f6666657246726f6d557365724d617070696e673a2063617260448201527f644e756d62657220646f6573206e6f74206d617463682e000000000000000000606482015260840161059c565b8061303381613862565b915050612ec5565b60008160405160200161304e919061390d565b6040516020818303038152906040528051906020012083604051602001613075919061390d565b6040516020818303038152906040528051906020012014905092915050565b5080546000825560050290600052602060002090810190611d109190613243565b6040518060a0016040528060608152602001600060ff1681526020016060815260200160006001600160a01b03168152602001600081525090565b82805482825590600052602060002090601f016020900481019282156131865791602002820160005b8382111561315757835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613119565b80156131845782816101000a81549060ff0219169055600101602081600001049283019260010302613157565b505b50613192929150613293565b5090565b82805482825590600052602060002090601f0160209004810192821561318657600052602060002091601f016020900482015b828111156131865782548255916001019190600101906131c9565b5080546131f09061387b565b6000825580601f10613200575050565b601f016020900490600052602060002090810190611d109190613293565b50805460008255601f016020900490600052602060002090810190611d109190613293565b8082111561319257600061325782826131e4565b60018201805460ff1916905561327160028301600061321e565b506003810180546001600160a01b031916905560006004820155600501613243565b5b808211156131925760008155600101613294565b80356001600160a01b0381168114611fa157600080fd5b6000602082840312156132d157600080fd5b6132da826132a8565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613320576133206132e1565b604052919050565b600082601f83011261333957600080fd5b813567ffffffffffffffff811115613353576133536132e1565b613366601f8201601f19166020016132f7565b81815284602083860101111561337b57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114611fa157600080fd5b600082601f8301126133ba57600080fd5b8135602067ffffffffffffffff8211156133d6576133d66132e1565b8160051b6133e58282016132f7565b92835284810182019282810190878511156133ff57600080fd5b83870192505b848310156134255761341683613398565b82529183019190830190613405565b979650505050505050565b6000806000806080858703121561344657600080fd5b843567ffffffffffffffff8082111561345e57600080fd5b61346a88838901613328565b9550613478602088016132a8565b945061348660408801613398565b9350606087013591508082111561349c57600080fd5b506134a9878288016133a9565b91505092959194509250565b600080604083850312156134c857600080fd5b6134d1836132a8565b91506134df60208401613398565b90509250929050565b6000602082840312156134fa57600080fd5b5035919050565b60006020828403121561351357600080fd5b6132da82613398565b60008060006060848603121561353157600080fd5b833567ffffffffffffffff8082111561354957600080fd5b61355587838801613328565b945061356360208701613398565b9350604086013591508082111561357957600080fd5b50613586868287016133a9565b9150509250925092565b60005b838110156135ab578181015183820152602001613593565b50506000910152565b600081518084526135cc816020860160208601613590565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561361357815160ff16875295820195908201906001016135f4565b509495945050505050565b6000815160a0845261363360a08501826135b4565b905060ff60208401511660208501526040830151848203604086015261365982826135e0565b6060858101516001600160a01b0316908701526080948501519490950193909352509192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156136d757603f198886030184526136c585835161361e565b945092850192908501906001016136a9565b5092979650505050505050565b8015158114611d1057600080fd5b60006020828403121561370457600080fd5b81356132da816136e4565b60808152600061372260808301876135b4565b60ff959095166020830152506001600160a01b03929092166040830152606090910152919050565b6020815260006132da602083018461361e565b6000806000806080858703121561377357600080fd5b61377c856132a8565b935061378a60208601613398565b9250613798604086016132a8565b91506137a660608601613398565b905092959194509250565b6000602082840312156137c357600080fd5b813567ffffffffffffffff8111156137da57600080fd5b6109f284828501613328565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016138745761387461384c565b5060010190565b600181811c9082168061388f57607f821691505b6020821081036138af57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082840312156138e357600080fd5b81516132da816136e4565b600060ff821660ff81036139045761390461384c565b60010192915050565b6000825161391f818460208701613590565b9190910192915050565b60008083546139378161387b565b6001828116801561394f576001811461396457613993565b60ff1984168752821515830287019450613993565b8760005260208060002060005b8581101561398a5781548a820152908401908201613971565b50505082870194505b50929695505050505050565b818103818111156107ca576107ca61384c565b808201808211156107ca576107ca61384c565b601f821115610a0657600081815260208120601f850160051c810160208610156139ec5750805b601f850160051c820191505b81811015613a0b578281556001016139f8565b505050505050565b815167ffffffffffffffff811115613a2d57613a2d6132e1565b613a4181613a3b845461387b565b846139c5565b602080601f831160018114613a765760008415613a5e5750858301515b600019600386901b1c1916600185901b178555613a0b565b600085815260208120601f198616915b82811015613aa557888601518255948401946001909101908401613a86565b5085821015613ac35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103613ade575050565b613ae8825461387b565b67ffffffffffffffff811115613b0057613b006132e1565b613b0e81613a3b845461387b565b6000601f821160018114613b425760008315613b2a5750848201545b600019600385901b1c1916600184901b17845561065f565b600085815260209020601f19841690600086815260209020845b83811015613b7c5782860154825560019586019590910190602001613b5c565b5085831015613ac35793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160a01b038416815260ff83166020820152606060408201819052600090610d01908301846135e0565b634e487b7160e01b600052603160045260246000fdfea264697066735822122092cd44bbd1c5e46ead7241ec5e135e7cba9ff72a72a707c2c7292b608df6d10964736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102325760003560e01c80637594a6ed11610130578063ce7483d5116100b8578063e2b365961161007c578063e2b3659614610515578063e359a0a114610528578063e5e5f7321461053b578063f2fde38b1461054e578063fc9e80fc1461056157600080fd5b8063ce7483d5146104a4578063cf86f8e5146104c7578063d250f03a146104cf578063d827a8f4146104e2578063e02f97231461050257600080fd5b806390222aa1116100ff57806390222aa11461044e5780639618b333146104565780639f91506914610469578063ba79b77b14610489578063c08029e71461049157600080fd5b80637594a6ed146103d35780638400a189146103f35780638a72ea6a146104065780638da5cb5b1461042957600080fd5b80633a027073116101be5780635a919aeb116101825780635a919aeb146103905780635bbfbfd614610399578063619980dc146103ac5780637065cb48146103b8578063715018a6146103cb57600080fd5b80633a0270731461032f5780633e293e16146103425780633ee992ee146103555780634c7a7ad31461036a57806358e57ebb1461037d57600080fd5b806329d3f60b1161020557806329d3f60b146102985780632edb5fcf146102d55780632f54bf6e146102e8578063322fba27146103145780633808dfe71461031c57600080fd5b80630cdb311714610237578063173825d91461025d57806317a1fed91461027257806319ab453c14610285575b600080fd5b61024a6102453660046132bf565b610574565b6040519081526020015b60405180910390f35b61027061026b3660046132bf565b6105c1565b005b610270610280366004613430565b610666565b6102706102933660046132bf565b6106a7565b6102c56102a63660046132bf565b6001600160a01b03166000908152600b60205260409020546005541190565b6040519015158152602001610254565b6102c56102e33660046134b5565b610711565b6102c56102f63660046132bf565b6001600160a01b031660009081526002602052604090205460ff1690565b6102706107d0565b61027061032a3660046134e8565b61097e565b6102c561033d366004613501565b6109b2565b61027061035036600461351c565b6109fa565b61035d610a0b565b6040516102549190613682565b6102706103783660046132bf565b610b9f565b61027061038b3660046136f2565b610c48565b61024a600d5481565b6102c56103a73660046134b5565b610c8a565b600d54600454116102c5565b6102706103c63660046132bf565b610d0a565b610270610d80565b61024a6103e13660046132bf565b600b6020526000908152604090205481565b61035d610401366004613501565b610d94565b6104196104143660046134e8565b610f38565b604051610254949392919061370f565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610254565b60045461024a565b61035d6104643660046132bf565b611010565b61047c6104773660046134b5565b6111d2565b604051610254919061374a565b60055461024a565b61027061049f36600461375d565b6113e1565b61024a6104b2366004613501565b60ff166000908152600c602052604090205490565b600d5461024a565b600154610436906001600160a01b031681565b61024a6104f0366004613501565b600c6020526000908152604090205481565b6102706105103660046134e8565b61186e565b61047c6105233660046137b1565b6118a2565b61047c6105363660046134e8565b611aab565b6102706105493660046134e8565b611c66565b61027061055c3660046132bf565b611c9a565b6102c561056f3660046132bf565b611d13565b60006001600160a01b0382166105a55760405162461bcd60e51b815260040161059c906137e6565b60405180910390fd5b506001600160a01b03166000908152600b602052604090205490565b3360009081526002602052604090205460ff166105f05760405162461bcd60e51b815260040161059c90613810565b604051632dd92c6960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561064b57600080fd5b505af415801561065f573d6000803e3d6000fd5b5050505050565b3360009081526002602052604090205460ff166106955760405162461bcd60e51b815260040161059c90613810565b6106a184848484611fa6565b50505050565b6106af612654565b6001600160a01b0381166106d55760405162461bcd60e51b815260040161059c906137e6565b600180546001600160a01b0319166001600160a01b0392909216919091178155336000908152600260205260409020805460ff19169091179055565b60006001600160a01b0383166107395760405162461bcd60e51b815260040161059c906137e6565b60005b6001600160a01b0384166000908152600b60205260409020548110156107c4576001600160a01b0384166000908152600960205260409020805460ff851691908390811061078c5761078c613836565b600091825260209091206001600590920201015460ff16036107b25760019150506107ca565b806107bc81613862565b91505061073c565b50600090505b92915050565b3360009081526002602052604090205460ff166107ff5760405162461bcd60e51b815260040161059c90613810565b60005b60085481101561093f57600960006008838154811061082357610823613836565b60009182526020808320600360059093020191909101546001600160a01b03168352820192909252604001812061085991613094565b6000600b60006008848154811061087257610872613836565b60009182526020808320600360059093020191909101546001600160a01b0316835282019290925260400181209190915560088054600a929190849081106108bc576108bc613836565b600091825260208083206001600590930201919091015460ff16835282019290925260400181206108ec91613094565b6000600c60006008848154811061090557610905613836565b600091825260208083206001600590930201919091015460ff1683528201929092526040019020558061093781613862565b915050610802565b506000600d81905561095390600890613094565b6040517f47e81efc038e27bb296dec5d44262943d2c2bbec28f461787a9cc53885694cb090600090a1565b3360009081526002602052604090205460ff166109ad5760405162461bcd60e51b815260040161059c90613810565b600555565b6000806109bf33846111d2565b60608101519091506001600160a01b031633146109df5750600092915050565b60006109f23385846000015160006126ae565b949350505050565b610a0683338484611fa6565b505050565b60606008805480602002602001604051908101604052809291908181526020016000905b82821015610b9657838290600052602060002090600502016040518060a0016040529081600082018054610a629061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8e9061387b565b8015610adb5780601f10610ab057610100808354040283529160200191610adb565b820191906000526020600020905b815481529060010190602001808311610abe57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610b5b57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b2c5790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610a2f565b50505050905090565b3360009081526002602052604090205460ff16610bce5760405162461bcd60e51b815260040161059c90613810565b6001600160a01b038116610bf45760405162461bcd60e51b815260040161059c906137e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa9060200160405180910390a150565b3360009081526002602052604090205460ff16610c775760405162461bcd60e51b815260040161059c90613810565b6007805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610cb95760405162461bcd60e51b815260040161059c90613810565b6000610cc584846111d2565b9050836001600160a01b031681606001516001600160a01b031614610cee5760009150506107ca565b6000610d018585846000015160006126ae565b95945050505050565b3360009081526002602052604090205460ff16610d395760405162461bcd60e51b815260040161059c90613810565b604051632d35e2b960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401610633565b610d88612654565b610d926000612824565b565b60ff81166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f2d57838290600052602060002090600502016040518060a0016040529081600082018054610df99061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e259061387b565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610ef257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610ec35790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610dc6565b505050509050919050565b60088181548110610f4857600080fd5b9060005260206000209060050201600091509050806000018054610f6b9061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f979061387b565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b5050505060018301546003840154600490940154929360ff909116926001600160a01b03909116915084565b60606001600160a01b0382166110385760405162461bcd60e51b815260040161059c906137e6565b6001600160a01b038216600090815260096020908152604080832080548251818502810185019093528083529193909284015b82821015610f2d57838290600052602060002090600502016040518060a001604052908160008201805461109e9061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca9061387b565b80156111175780601f106110ec57610100808354040283529160200191611117565b820191906000526020600020905b8154815290600101906020018083116110fa57829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561119757602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116111685790505b505050918352505060038201546001600160a01b0316602080830191909152600490920154604090910152908252600192909201910161106b565b6111da6130b5565b6001600160a01b0383166112005760405162461bcd60e51b815260040161059c906137e6565b6001600160a01b0383166000908152600960209081526040808320600b90925282205490915b818110156113d8578460ff1683828154811061124457611244613836565b600091825260209091206001600590920201015460ff16036113c65782818154811061127257611272613836565b90600052602060002090600502016040518060a001604052908160008201805461129b9061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546112c79061387b565b80156113145780601f106112e957610100808354040283529160200191611314565b820191906000526020600020905b8154815290600101906020018083116112f757829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561139457602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116113655790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015293506107ca92505050565b806113d081613862565b915050611226565b50610d01612874565b60006113ed83836111d2565b9050826001600160a01b031681606001516001600160a01b0316146114705760405162461bcd60e51b815260206004820152603360248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152723ab6b132b9103237b713ba1032bc34b9ba399760691b606482015260840161059c565b604081015180516000036115455760015460405163117ece1960e31b81526001600160a01b0390911690638bf670c8906114b090879089906004016138b5565b6020604051808303816000875af11580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906138d1565b156115405760405162461bcd60e51b815260206004820152601f60248201527f546865207573657220616c726561647920686173207468617420636172642e00604482015260640161059c565b6115f7565b6000805b82518160ff161015611599578660ff16838260ff168151811061156e5761156e613836565b602002602001015160ff16036115875760019150611599565b80611591816138ee565b915050611549565b50806115f55760405162461bcd60e51b815260206004820152602560248201527f5468652063617264206973206e6f7420696e2077616e746564436172644e756d6044820152643132b9399760d91b606482015260840161059c565b505b600061160a8585856000015160016126ae565b90508061166b5760405162461bcd60e51b815260206004820152602960248201527f4572726f722064656c6574696e67206f66666572206166746572207472616e7360448201526866657220636172647360b81b606482015260840161059c565b60015460405163568b427d60e11b81526001600160a01b03898116600483015260ff808a1660248401528882166044840152871660648301529091169063ad1684fa90608401600060405180830381600087803b1580156116cb57600080fd5b505af11580156116df573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c89150611715908a9088906004016138b5565b6020604051808303816000875af1158015611734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175891906138d1565b6117a45760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765206572726f7220776974682077616c6c65742066726f6d00604482015260640161059c565b60015460405163117ece1960e31b81526001600160a01b0390911690638bf670c8906117d69088908a906004016138b5565b6020604051808303816000875af11580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181991906138d1565b6118655760405162461bcd60e51b815260206004820152601d60248201527f45786368616e6765206572726f7220776974682077616c6c657420746f000000604482015260640161059c565b50505050505050565b3360009081526002602052604090205460ff1661189d5760405162461bcd60e51b815260040161059c90613810565b600655565b6118aa6130b5565b60005b600854811015611aa257826040516020016118c8919061390d565b60405160208183030381529060405280519060200120600882815481106118f1576118f1613836565b90600052602060002090600502016000016040516020016119129190613929565b6040516020818303038152906040528051906020012003611a90576008818154811061194057611940613836565b90600052602060002090600502016040518060a00160405290816000820180546119699061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546119959061387b565b80156119e25780601f106119b7576101008083540402835291602001916119e2565b820191906000526020600020905b8154815290600101906020018083116119c557829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611a6257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611a335790505b505050918352505060038201546001600160a01b031660208201526004909101546040909101529392505050565b80611a9a81613862565b9150506118ad565b506107ca612874565b611ab36130b5565b6008548210611b045760405162461bcd60e51b815260206004820152601760248201527f4f6666657220496420646f6573206e6f74206578697374000000000000000000604482015260640161059c565b60088281548110611b1757611b17613836565b90600052602060002090600502016040518060a0016040529081600082018054611b409061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6c9061387b565b8015611bb95780601f10611b8e57610100808354040283529160200191611bb9565b820191906000526020600020905b815481529060010190602001808311611b9c57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611c3957602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611c0a5790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015292915050565b3360009081526002602052604090205460ff16611c955760405162461bcd60e51b815260040161059c90613810565b600455565b611ca2612654565b6001600160a01b038116611d075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059c565b611d1081612824565b50565b6001546000906001600160a01b03163314611d8a5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792067616d6d6120636172647320636f6e74726163742063616e2063616044820152703636103a3434b990333ab731ba34b7b71760791b606482015260840161059c565b6001600160a01b038216611db05760405162461bcd60e51b815260040161059c906137e6565b6001600160a01b0382166000908152600960209081526040808320600b90925282205490915b81811015611f29576000838281548110611df257611df2613836565b90600052602060002090600502016000018054611e0e9061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3a9061387b565b8015611e875780601f10611e5c57610100808354040283529160200191611e87565b820191906000526020600020905b815481529060010190602001808311611e6a57829003601f168201915b505050505090506000848381548110611ea257611ea2613836565b600091825260209091206001600590920201015460ff169050611ec68782846128bd565b611ecf82612c2e565b5060ff81166000908152600c60205260408120805460019290611ef390849061399f565b925050819055506001600d6000828254611f0d919061399f565b9250508190555050508080611f2190613862565b915050611dd6565b506001600160a01b0384166000908152600960205260408120611f4b91613094565b6001600160a01b0384166000818152600b602090815260408083209290925590519182527f65419c67e554142d50c59abd004485123ca498611a223f842e75dd96225ba4c8910160405180910390a16001925050505b919050565b6001546001600160a01b0316611ffe5760405162461bcd60e51b815260206004820152601b60248201527f47616d6d614361726473436f6e7472616374206e6f74207365742e0000000000604482015260640161059c565b6005546001600160a01b0384166000908152600b60205260409020541061207c5760405162461bcd60e51b815260206004820152602c60248201527f5573657220686173207265616368656420746865206d6178696d756d20616c6c60448201526b37bbb2b21037b33332b9399760a11b606482015260840161059c565b600454600d54106120e65760405162461bcd60e51b815260206004820152602e60248201527f546f74616c206f66666572732068617665207265616368656420746865206d6160448201526d3c34b6bab69030b63637bbb2b21760911b606482015260840161059c565b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c89061211990879087906004016138b5565b6020604051808303816000875af1158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c91906138d1565b9050806121ab5760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f742068617665207468617420636172642e00000000604482015260640161059c565b60005b82518160ff161015612254578360ff16838260ff16815181106121d3576121d3613836565b602002602001015160ff16036122425760405162461bcd60e51b815260206004820152602e60248201527f54686520636172644e756d6265722063616e6e6f7420626520696e2077616e7460448201526d32b221b0b932273ab6b132b9399760911b606482015260840161059c565b8061224c816138ee565b9150506121ae565b50600061226185856111d2565b60608101519091506001600160a01b0316156122dd5760405162461bcd60e51b815260206004820152603560248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152743ab6b132b91030b63932b0b23c9032bc34b9ba399760591b606482015260840161059c565b6001600160a01b0385166000908152600b602052604081208054600192906123069084906139b2565b909155505060ff84166000908152600c6020526040812080546001929061232e9084906139b2565b925050819055506001600d600082825461234891906139b2565b90915550506040805160a08101825287815260ff861660208201529081018490526001600160a01b038616606082015242608082015260088054600181018255600091909152815160059091027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3019081906123c49082613a13565b5060208281015160018301805460ff191660ff909216919091179055604083015180516123f792600285019201906130f0565b5060608201516003820180546001600160a01b0319166001600160a01b0392831617905560809092015160049091015585166000908152600960205260409020600880546124479060019061399f565b8154811061245757612457613836565b60009182526020808320845460018101865594845292206005918202909201920201806124848382613ad3565b50600182810154908201805460ff191660ff909216919091179055600280830180546124b39284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560ff84166000908152600a60205260409020600880546125059060019061399f565b8154811061251557612515613836565b60009182526020808320845460018101865594845292206005918202909201920201806125428382613ad3565b50600182810154908201805460ff191660ff909216919091179055600280830180546125719284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560075460ff161561261157600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac906125de90889088906004016138b5565b600060405180830381600087803b1580156125f857600080fd5b505af115801561260c573d6000803e3d6000fd5b505050505b7fed750964f1f81f105e56dfd1121427e0898e7bc23d6c10e92d851a2d35e0cfc585858560405161264493929190613ba6565b60405180910390a1505050505050565b6000546001600160a01b03163314610d925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059c565b60006001600160a01b0385166126d65760405162461bcd60e51b815260040161059c906137e6565b6126e1858585612eab565b6126ec8585856128bd565b6126f583612c2e565b506001600160a01b0385166000908152600b6020526040812080546001929061271f90849061399f565b909155505060ff84166000908152600c6020526040812080546001929061274790849061399f565b925050819055506001600d6000828254612761919061399f565b909155505060075460ff168015612776575081155b156127e057600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f92906127ad90889088906004016138b5565b600060405180830381600087803b1580156127c757600080fd5b505af11580156127db573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f585856040516128119291906138b5565b60405180910390a1506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61287c6130b5565b506040805160c081018252600060a0820181815282526020808301829052835182815290810184529282019290925260608101829052608081019190915290565b60ff82166000908152600a60205260408120905b815481101561065f5761298f8282815481106128ef576128ef613836565b9060005260206000209060050201600001805461290b9061387b565b80601f01602080910402602001604051908101604052809291908181526020018280546129379061387b565b80156129845780601f1061295957610100808354040283529160200191612984565b820191906000526020600020905b81548152906001019060200180831161296757829003601f168201915b50505050508461303b565b15612c1c57846001600160a01b03168282815481106129b0576129b0613836565b60009182526020909120600360059092020101546001600160a01b031614612a405760405162461bcd60e51b815260206004820152603860248201527f5f72656d6f76654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a206f776e657220646f6573206e6f74206d617463682e0000000000000000606482015260840161059c565b8360ff16828281548110612a5657612a56613836565b600091825260209091206001600590920201015460ff1614612ae05760405162461bcd60e51b815260206004820152603d60248201527f5f72656d6f76654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a20636172644e756d62657220646f6573206e6f74206d617463682e000000606482015260840161059c565b8154612aee9060019061399f565b811015612bb05781548290612b059060019061399f565b81548110612b1557612b15613836565b9060005260206000209060050201828281548110612b3557612b35613836565b6000918252602090912060059091020180612b508382613ad3565b50600182810154908201805460ff191660ff90921691909117905560028083018054612b7f9284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101555b81805480612bc057612bc0613bd3565b60008281526020812060001990920191600583020190612be082826131e4565b60018201805460ff19169055612bfa60028301600061321e565b506003810180546001600160a01b03191690556000600490910155905561065f565b80612c2681613862565b9150506128d1565b600080805b600854811015612ea45760085481108015612cff5750612cff60088281548110612c5f57612c5f613836565b90600052602060002090600502016000018054612c7b9061387b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ca79061387b565b8015612cf45780601f10612cc957610100808354040283529160200191612cf4565b820191906000526020600020905b815481529060010190602001808311612cd757829003601f168201915b50505050508561303b565b15612e925760088181548110612d1757612d17613836565b60009182526020822060059091020190612d3182826131e4565b60018201805460ff19169055612d4b60028301600061321e565b506003810180546001600160a01b0319169055600060049091015560088054612d769060019061399f565b81548110612d8657612d86613836565b906000526020600020906005020160088281548110612da757612da7613836565b6000918252602090912060059091020180612dc28382613ad3565b50600182810154908201805460ff191660ff90921691909117905560028083018054612df19284019190613196565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101556008805480612e3257612e32613bd3565b60008281526020812060001990920191600583020190612e5282826131e4565b60018201805460ff19169055612e6c60028301600061321e565b506003810180546001600160a01b03191690556000600490910155905560019150612ea4565b80612e9c81613862565b915050612c33565b5092915050565b6001600160a01b0383166000908152600960205260408120905b815481101561065f57612ee38282815481106128ef576128ef613836565b1561302957846001600160a01b0316828281548110612f0457612f04613836565b60009182526020909120600360059092020101546001600160a01b031614612f895760405162461bcd60e51b815260206004820152603260248201527f5f72656d6f76654f6666657246726f6d557365724d617070696e673a206f776e60448201527132b9103237b2b9903737ba1036b0ba31b41760711b606482015260840161059c565b8360ff16828281548110612f9f57612f9f613836565b600091825260209091206001600590920201015460ff1614612ae05760405162461bcd60e51b815260206004820152603760248201527f5f72656d6f76654f6666657246726f6d557365724d617070696e673a2063617260448201527f644e756d62657220646f6573206e6f74206d617463682e000000000000000000606482015260840161059c565b8061303381613862565b915050612ec5565b60008160405160200161304e919061390d565b6040516020818303038152906040528051906020012083604051602001613075919061390d565b6040516020818303038152906040528051906020012014905092915050565b5080546000825560050290600052602060002090810190611d109190613243565b6040518060a0016040528060608152602001600060ff1681526020016060815260200160006001600160a01b03168152602001600081525090565b82805482825590600052602060002090601f016020900481019282156131865791602002820160005b8382111561315757835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613119565b80156131845782816101000a81549060ff0219169055600101602081600001049283019260010302613157565b505b50613192929150613293565b5090565b82805482825590600052602060002090601f0160209004810192821561318657600052602060002091601f016020900482015b828111156131865782548255916001019190600101906131c9565b5080546131f09061387b565b6000825580601f10613200575050565b601f016020900490600052602060002090810190611d109190613293565b50805460008255601f016020900490600052602060002090810190611d109190613293565b8082111561319257600061325782826131e4565b60018201805460ff1916905561327160028301600061321e565b506003810180546001600160a01b031916905560006004820155600501613243565b5b808211156131925760008155600101613294565b80356001600160a01b0381168114611fa157600080fd5b6000602082840312156132d157600080fd5b6132da826132a8565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613320576133206132e1565b604052919050565b600082601f83011261333957600080fd5b813567ffffffffffffffff811115613353576133536132e1565b613366601f8201601f19166020016132f7565b81815284602083860101111561337b57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114611fa157600080fd5b600082601f8301126133ba57600080fd5b8135602067ffffffffffffffff8211156133d6576133d66132e1565b8160051b6133e58282016132f7565b92835284810182019282810190878511156133ff57600080fd5b83870192505b848310156134255761341683613398565b82529183019190830190613405565b979650505050505050565b6000806000806080858703121561344657600080fd5b843567ffffffffffffffff8082111561345e57600080fd5b61346a88838901613328565b9550613478602088016132a8565b945061348660408801613398565b9350606087013591508082111561349c57600080fd5b506134a9878288016133a9565b91505092959194509250565b600080604083850312156134c857600080fd5b6134d1836132a8565b91506134df60208401613398565b90509250929050565b6000602082840312156134fa57600080fd5b5035919050565b60006020828403121561351357600080fd5b6132da82613398565b60008060006060848603121561353157600080fd5b833567ffffffffffffffff8082111561354957600080fd5b61355587838801613328565b945061356360208701613398565b9350604086013591508082111561357957600080fd5b50613586868287016133a9565b9150509250925092565b60005b838110156135ab578181015183820152602001613593565b50506000910152565b600081518084526135cc816020860160208601613590565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561361357815160ff16875295820195908201906001016135f4565b509495945050505050565b6000815160a0845261363360a08501826135b4565b905060ff60208401511660208501526040830151848203604086015261365982826135e0565b6060858101516001600160a01b0316908701526080948501519490950193909352509192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156136d757603f198886030184526136c585835161361e565b945092850192908501906001016136a9565b5092979650505050505050565b8015158114611d1057600080fd5b60006020828403121561370457600080fd5b81356132da816136e4565b60808152600061372260808301876135b4565b60ff959095166020830152506001600160a01b03929092166040830152606090910152919050565b6020815260006132da602083018461361e565b6000806000806080858703121561377357600080fd5b61377c856132a8565b935061378a60208601613398565b9250613798604086016132a8565b91506137a660608601613398565b905092959194509250565b6000602082840312156137c357600080fd5b813567ffffffffffffffff8111156137da57600080fd5b6109f284828501613328565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016138745761387461384c565b5060010190565b600181811c9082168061388f57607f821691505b6020821081036138af57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082840312156138e357600080fd5b81516132da816136e4565b600060ff821660ff81036139045761390461384c565b60010192915050565b6000825161391f818460208701613590565b9190910192915050565b60008083546139378161387b565b6001828116801561394f576001811461396457613993565b60ff1984168752821515830287019450613993565b8760005260208060002060005b8581101561398a5781548a820152908401908201613971565b50505082870194505b50929695505050505050565b818103818111156107ca576107ca61384c565b808201808211156107ca576107ca61384c565b601f821115610a0657600081815260208120601f850160051c810160208610156139ec5750805b601f850160051c820191505b81811015613a0b578281556001016139f8565b505050505050565b815167ffffffffffffffff811115613a2d57613a2d6132e1565b613a4181613a3b845461387b565b846139c5565b602080601f831160018114613a765760008415613a5e5750858301515b600019600386901b1c1916600185901b178555613a0b565b600085815260208120601f198616915b82811015613aa557888601518255948401946001909101908401613a86565b5085821015613ac35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103613ade575050565b613ae8825461387b565b67ffffffffffffffff811115613b0057613b006132e1565b613b0e81613a3b845461387b565b6000601f821160018114613b425760008315613b2a5750848201545b600019600385901b1c1916600184901b17845561065f565b600085815260209020601f19841690600086815260209020845b83811015613b7c5782860154825560019586019590910190602001613b5c565b5085831015613ac35793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160a01b038416815260ff83166020820152606060408201819052600090610d01908301846135e0565b634e487b7160e01b600052603160045260246000fdfea264697066735822122092cd44bbd1c5e46ead7241ec5e135e7cba9ff72a72a707c2c7292b608df6d10964736f6c63430008140033", - "linkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 1713 - }, - { - "length": 20, - "start": 3578 - } - ] - } - }, - "deployedLinkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 1557 - }, - { - "length": 20, - "start": 3422 - } - ] - } - } -} diff --git a/src/context/abis/GammaPacks.v3.sol/NofGammaPacksV3.json b/src/context/abis/GammaPacks.v3.sol/NofGammaPacksV3.json deleted file mode 100644 index 7af1ceab..00000000 --- a/src/context/abis/GammaPacks.v3.sol/NofGammaPacksV3.json +++ /dev/null @@ -1,804 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NofGammaPacksV3", - "sourceName": "contracts/gamma/GammaPacks.v3.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "balanceReceiver", - "type": "address" - } - ], - "name": "NewBalanceReceiver", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newCardsContract", - "type": "address" - } - ], - "name": "NewGammaCardsContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaTicketContract", - "type": "address" - } - ], - "name": "NewGammaTicketsContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "newPrice", - "type": "uint256" - } - ], - "name": "NewPrice", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "PackOpened", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "PackPurchased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "PackTransfered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "buyer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "tokenIds", - "type": "uint256[]" - } - ], - "name": "PacksPurchased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "tokenId", - "type": "uint256[]" - } - ], - "name": "PacksTransfered", - "type": "event" - }, - { - "inputs": [], - "name": "DAI_TOKEN", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "balanceReceiver", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "buyPack", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "buyPackByUser", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "numberOfPacks", - "type": "uint256" - } - ], - "name": "buyPacks", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint256", - "name": "numberOfPacks", - "type": "uint256" - } - ], - "name": "buyPacksByUser", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newBalanceReceiver", - "type": "address" - } - ], - "name": "changeBalanceReceiver", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_newPrice", - "type": "uint256" - } - ], - "name": "changePrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_transferDai", - "type": "bool" - } - ], - "name": "changeTransferDaiFlag", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "gammaCardsContract", - "outputs": [ - { - "internalType": "contract IGammaCardsContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gammaTicketsContract", - "outputs": [ - { - "internalType": "contract IgammaTicketsContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "numberOfPacks", - "type": "uint256" - } - ], - "name": "getAmountRequiredToBuyPacks", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getPackOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "getPacksByUser", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "numberOfPacks", - "type": "uint256" - } - ], - "name": "getPrizeAmountToBuyPacks", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "numberOfPacks", - "type": "uint256" - } - ], - "name": "getPrizeNoFAccountAmountToBuyPacks", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_daiTokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_balanceReceiver", - "type": "address" - }, - { - "internalType": "address", - "name": "_gammaCardsContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_gammaTicketsContract", - "type": "address" - } - ], - "name": "init", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "numberOfPacks", - "type": "uint256" - } - ], - "name": "meetQuantityConditionsToBuy", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "openPack", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "tokenIds", - "type": "uint256[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "openPacks", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "packPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "packs", - "outputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "packsByUser", - "outputs": [ - { - "internalType": "uint256", - "name": "tokenIds", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_ownerToRemove", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaCardsContract", - "type": "address" - } - ], - "name": "setGammaCardsContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaTicketsContract", - "type": "address" - } - ], - "name": "setGammaTicketsContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "testOpenPack", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "tokenIds", - "type": "uint256[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "testOpenPacks", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferPack", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "tokenIds", - "type": "uint256[]" - } - ], - "name": "transferPacks", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040526710a741a46278000060065560006008556009805460ff1916600117905534801561002e57600080fd5b506100383361003d565b61008d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611fb88061009c6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80638fd5baf711610125578063c37b9bcd116100ad578063d6a4c3e41161007c578063d6a4c3e4146104d1578063ddb975e8146104e4578063e0f78307146104f7578063e606df871461050a578063f2fde38b1461051d57600080fd5b8063c37b9bcd1461047a578063d250f03a14610482578063d3e6a7ad14610495578063d611713e146104be57600080fd5b8063a2b40d19116100f4578063a2b40d1914610405578063ab4bdbc814610418578063b48ce6531461042b578063b84c13921461043e578063bd7133801461046757600080fd5b80638fd5baf7146103b9578063967ed63d146103cc57806397f8b3d3146103df57806399e5f896146103f257600080fd5b80633f6ecd48116101a85780636adbaf75116101775780636adbaf75146103675780637065cb481461037a578063715018a61461038d57806380f2540b146103955780638da5cb5b146103a857600080fd5b80633f6ecd481461030e5780634c7a7ad314610321578063627b253f1461033457806362e218781461034757600080fd5b8063173825d9116101ef578063173825d91461029a57806318160ddd146102ad5780632f54bf6e146102b6578063335c8b63146102f257806339e8d3ec146102fb57600080fd5b806301321c4d1461022157806306552ff3146102475780630c3e5c001461025c57806314cca36a1461026f575b600080fd5b61023461022f366004611a9a565b610530565b6040519081526020015b60405180910390f35b61025a610255366004611aca565b61055e565b005b61025a61026a366004611bcf565b61064a565b600254610282906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b61025a6102a8366004611c1d565b6106c5565b61023461c35081565b6102e26102c4366004611c1d565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161023e565b61023460065481565b61025a610309366004611c38565b61076a565b61023461031c366004611a9a565b6107a7565b61025a61032f366004611c1d565b6107d5565b600754610282906001600160a01b031681565b61035a610355366004611c5b565b61087f565b60405161023e9190611cc0565b61035a610375366004611a9a565b6108bb565b61025a610388366004611c1d565b6108c7565b61025a61093d565b61025a6103a3366004611c38565b610951565b6000546001600160a01b0316610282565b61035a6103c7366004611c1d565b61097b565b6102346103da366004611c1d565b6109e7565b61025a6103ed366004611bcf565b610a24565b61025a610400366004611ce1565b610a95565b61025a610413366004611a9a565b610ad7565b61025a610426366004611cfe565b610b9a565b610234610439366004611a9a565b610c21565b61028261044c366004611a9a565b600a602052600090815260409020546001600160a01b031681565b610234610475366004611c5b565b610c4e565b610234610c7f565b600154610282906001600160a01b031681565b6102826104a3366004611a9a565b6000908152600a60205260409020546001600160a01b031690565b61025a6104cc366004611c5b565b610c8f565b6102e26104df366004611a9a565b610c99565b61025a6104f2366004611c1d565b610cd2565b61025a610505366004611c1d565b610d75565b600554610282906001600160a01b031681565b61025a61052b366004611c1d565b610e18565b60008061053c836107a7565b9050808360065461054d9190611d62565b6105579190611d79565b9392505050565b610566610e91565b6001600160a01b0383166105955760405162461bcd60e51b815260040161058c90611d8c565b60405180910390fd5b6001600160a01b0382166105bb5760405162461bcd60e51b815260040161058c90611d8c565b6001600160a01b0381166105e15760405162461bcd60e51b815260040161058c90611d8c565b600580546001600160a01b03199081166001600160a01b039687161790915560078054821694861694909417909355600180548416928516929092178255600280549093169316929092179055336000908152600360205260409020805460ff19169091179055565b3360009081526003602052604090205460ff166106795760405162461bcd60e51b815260040161058c90611db6565b60005b82518110156106c057600083828151811061069957610699611ddc565b602002602001015190506106ad8184610eeb565b50806106b881611df2565b91505061067c565b505050565b3360009081526003602052604090205460ff166106f45760405162461bcd60e51b815260040161058c90611db6565b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561074f57600080fd5b505af4158015610763573d6000803e3d6000fd5b5050505050565b3360009081526003602052604090205460ff166107995760405162461bcd60e51b815260040161058c90611db6565b6107a38282610eeb565b5050565b600081600680546107b89190611e0b565b6006546107c59190611d79565b6107cf9190611d62565b92915050565b3360009081526003602052604090205460ff166108045760405162461bcd60e51b815260040161058c90611db6565b6001600160a01b03811661082a5760405162461bcd60e51b815260040161058c90611d8c565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020015b60405180910390a150565b3360009081526003602052604090205460609060ff166108b15760405162461bcd60e51b815260040161058c90611db6565b6105578383610f51565b60606107cf3383610f51565b3360009081526003602052604090205460ff166108f65760405162461bcd60e51b815260040161058c90611db6565b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401610737565b610945610e91565b61094f600061129c565b565b6001546001600160a01b031633146107995760405162461bcd60e51b815260040161058c90611e2d565b6001600160a01b0381166000908152600b60209081526040918290208054835181840281018401909452808452606093928301828280156109db57602002820191906000526020600020905b8154815260200190600101908083116109c7575b50505050509050919050565b3360009081526003602052604081205460ff16610a165760405162461bcd60e51b815260040161058c90611db6565b6107cf826112ec565b919050565b6001546001600160a01b03163314610a4e5760405162461bcd60e51b815260040161058c90611e2d565b60005b82518110156106c0576000838281518110610a6e57610a6e611ddc565b60200260200101519050610a828184610eeb565b5080610a8d81611df2565b915050610a51565b3360009081526003602052604090205460ff16610ac45760405162461bcd60e51b815260040161058c90611db6565b6009805460ff1916911515919091179055565b3360009081526003602052604090205460ff16610b065760405162461bcd60e51b815260040161058c90611db6565b60068190556001546040516370c41e3760e11b8152600481018390526001600160a01b039091169063e1883c6e90602401600060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b505050507f270b316b51ab2cf3a3bb8ca4d22e76a327d05e762fcaa8bd6afaf8cfde9270b78160405161087491815260200190565b60005b8151811015610be1576000828281518110610bba57610bba611ddc565b60200260200101519050610bce848261131f565b5080610bd981611df2565b915050610b9d565b507f1affae2fd35738ec8f6a4212f337c673b41aa2231f1bd5cfeb94463a93ace1f1338383604051610c1593929190611e7e565b60405180910390a15050565b600080610c2d836107a7565b90506000610c3a84610530565b9050610c468183611eb3565b949350505050565b600b6020528160005260406000208181548110610c6a57600080fd5b90600052602060002001600091509150505481565b6000610c8a336112ec565b905090565b6107a3828261131f565b6000808211610cba5760405162461bcd60e51b815260040161058c90611ec6565b61c35082600854610ccb9190611eb3565b1092915050565b3360009081526003602052604090205460ff16610d015760405162461bcd60e51b815260040161058c90611db6565b6001600160a01b038116610d275760405162461bcd60e51b815260040161058c90611d8c565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa20290602001610874565b3360009081526003602052604090205460ff16610da45760405162461bcd60e51b815260040161058c90611db6565b6001600160a01b038116610dca5760405162461bcd60e51b815260040161058c90611d8c565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f7161c7a7090d78e8031fca87e845a86b39e0eb9c15436933d2d4ce7f4520c4a590602001610874565b610e20610e91565b6001600160a01b038116610e855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058c565b610e8e8161129c565b50565b6000546001600160a01b0316331461094f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058c565b610ef58282611447565b6000828152600a602090815260409182902080546001600160a01b031916905581516001600160a01b03841681529081018490527f459bdaa71b6c253b49d34a7622dc4c6c1c416c0567571c068b392ba7172ddd4c9101610c15565b60606001600160a01b038316610f795760405162461bcd60e51b815260040161058c90611d8c565b60008211610f995760405162461bcd60e51b815260040161058c90611ec6565b61c35082600854610faa9190611eb3565b1061101d5760405162461bcd60e51b815260206004820152603c60248201527f546865206e756d626572206f66207061636b7320796f752077616e7420746f2060448201527f62757920657863656564732074686f736520617661696c61626c652e00000000606482015260840161058c565b60008267ffffffffffffffff81111561103857611038611b1e565b604051908082528060200260200182016040528015611061578160200160208202803683370190505b50905060005b838110156111555760085461c35081106110c35760405162461bcd60e51b815260206004820152601860248201527f546865726520617265206e6f206d6f7265207061636b732e0000000000000000604482015260640161058c565b6001600860008282546110d69190611eb3565b90915550506000818152600a6020908152604080832080546001600160a01b0319166001600160a01b038b169081179091558352600b8252822080546001810182559083529120018190558251819084908490811061113757611137611ddc565b6020908102919091010152508061114d81611df2565b915050611067565b5060006111628585611586565b9050806111e65760405162461bcd60e51b815260206004820152604660248201527f546865207472616e73666572732072656c6174656420746f207468652070757260448201527f6368617365206f66207061636b7320636f756c64206e6f7420626520636f6d706064820152653632ba32b21760d11b608482015260a40161058c565b8360010361125a577fc79cad949a408373456da7a9e88e8114102aa00e03a69733c70e3a0d95944ca7858360008151811061122357611223611ddc565b602002602001015160405161124d9291906001600160a01b03929092168252602082015260400190565b60405180910390a1611294565b7f8ae8b18ed6d499ec84f68235bf3512b3db155f7911789805d36093467e5971c9858360405161128b929190611f12565b60405180910390a15b509392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806112fa836001610f51565b90508060008151811061130f5761130f611ddc565b6020026020010151915050919050565b6001600160a01b0382166113455760405162461bcd60e51b815260040161058c90611d8c565b6000818152600a60205260409020546001600160a01b031633146113ab5760405162461bcd60e51b815260206004820152601760248201527f54486973207061636b206973206e6f7420796f7572732e000000000000000000604482015260640161058c565b6000818152600a6020526040902080546001600160a01b0319166001600160a01b0384161790556113dc8133611447565b6001600160a01b0382166000818152600b6020908152604080832080546001810182559084529282902090920184905581513381529081019290925281018290527f16e5698e3d85c69c8d8cdb9a21893b33518e24d8cb69d9944d4bfd233464c3a290606001610c15565b6001600160a01b0381166000908152600b6020526040812054905b81811015611580576001600160a01b0383166000908152600b6020526040902080548591908390811061149757611497611ddc565b90600052602060002001540361156e576001600160a01b0383166000908152600b6020526040902080546114cd90600190611d79565b815481106114dd576114dd611ddc565b9060005260206000200154600b6000856001600160a01b03166001600160a01b03168152602001908152602001600020828154811061151e5761151e611ddc565b60009182526020808320909101929092556001600160a01b0385168152600b9091526040902080548061155357611553611f36565b60019003818190600052602060002001600090559055611580565b8061157881611df2565b915050611462565b50505050565b600080611592836107a7565b9050600061159f84610530565b600154604051630bc639c960e31b8152600481018590529192506001600160a01b031690635e31ce4890602401600060405180830381600087803b1580156115e657600080fd5b505af11580156115fa573d6000803e3d6000fd5b505060095460ff16159150611a8f905057600554604051636eb1769f60e11b81526001600160a01b03878116600483015230602483015290911690600090829063dd62ed3e90604401602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190611f4c565b90506116908385611eb3565b8110156117165760405162461bcd60e51b815260206004820152604860248201527f496e73756666696369656e7420616c6c6f77616e636520746f207472616e736660448201527f6572207072697a657320616d6f756e7420616e64204e4f46204163636f756e746064820152671030b6b7bab73a1760c11b608482015260a40161058c565b6040516370a0823160e01b81526001600160a01b0388811660048301528591908416906370a0823190602401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190611f4c565b10156117e95760405162461bcd60e51b815260206004820152602f60248201527f496e73756666696369656e742062616c616e636520746f207472616e7366657260448201526e10383934bd32b99030b6b7bab73a1760891b606482015260840161058c565b6040516370a0823160e01b81526001600160a01b0388811660048301528491908416906370a0823190602401602060405180830381865afa158015611832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118569190611f4c565b10156118bc5760405162461bcd60e51b815260206004820152602f60248201527f496e73756666696369656e742062616c616e636520746f207472616e7366657260448201526e10383937b334ba1030b6b7bab73a1760891b606482015260840161058c565b6001546040516323b872dd60e01b81526001600160a01b0389811660048301529182166024820152604481018690526000918416906323b872dd906064016020604051808303816000875af1158015611919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193d9190611f65565b9050806119a65760405162461bcd60e51b815260206004820152603160248201527f4572726f722073656e64696e67207072697a6520616d6f756e7420746f20676160448201527036b6b0a1b0b93239a1b7b73a3930b1ba1760791b606482015260840161058c565b6007546040516323b872dd60e01b81526001600160a01b038a811660048301529182166024820152604481018690526000918516906323b872dd906064016020604051808303816000875af1158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a279190611f65565b905080611a8a5760405162461bcd60e51b815260206004820152602b60248201527f4572726f722073656e64696e672070726f66697420616d6f756e7420746f204e60448201526a37a31030b1b1b7bab73a1760a91b606482015260840161058c565b505050505b506001949350505050565b600060208284031215611aac57600080fd5b5035919050565b80356001600160a01b0381168114610a1f57600080fd5b60008060008060808587031215611ae057600080fd5b611ae985611ab3565b9350611af760208601611ab3565b9250611b0560408601611ab3565b9150611b1360608601611ab3565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611b4557600080fd5b8135602067ffffffffffffffff80831115611b6257611b62611b1e565b8260051b604051601f19603f83011681018181108482111715611b8757611b87611b1e565b604052938452858101830193838101925087851115611ba557600080fd5b83870191505b84821015611bc457813583529183019190830190611bab565b979650505050505050565b60008060408385031215611be257600080fd5b823567ffffffffffffffff811115611bf957600080fd5b611c0585828601611b34565b925050611c1460208401611ab3565b90509250929050565b600060208284031215611c2f57600080fd5b61055782611ab3565b60008060408385031215611c4b57600080fd5b82359150611c1460208401611ab3565b60008060408385031215611c6e57600080fd5b611c7783611ab3565b946020939093013593505050565b600081518084526020808501945080840160005b83811015611cb557815187529582019590820190600101611c99565b509495945050505050565b6020815260006105576020830184611c85565b8015158114610e8e57600080fd5b600060208284031215611cf357600080fd5b813561055781611cd3565b60008060408385031215611d1157600080fd5b611d1a83611ab3565b9150602083013567ffffffffffffffff811115611d3657600080fd5b611d4285828601611b34565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107cf576107cf611d4c565b818103818111156107cf576107cf611d4c565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201611e0457611e04611d4c565b5060010190565b600082611e2857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526031908201527f4f6e6c792067616d6d6120636172647320636f6e74726163742063616e2063616040820152703636103a3434b990333ab731ba34b7b71760791b606082015260800190565b6001600160a01b03848116825283166020820152606060408201819052600090611eaa90830184611c85565b95945050505050565b808201808211156107cf576107cf611d4c565b6020808252602c908201527f4e756d626572206f66207061636b732073686f756c642062652067726561746560408201526b39103a3430b7103d32b9379760a11b606082015260800190565b6001600160a01b0383168152604060208201819052600090610c4690830184611c85565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611f5e57600080fd5b5051919050565b600060208284031215611f7757600080fd5b815161055781611cd356fea2646970667358221220c72b2393e3bcd3deb50f5fff31aba6f60a77f67288c45d0a79012f6e873e6a6864736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80638fd5baf711610125578063c37b9bcd116100ad578063d6a4c3e41161007c578063d6a4c3e4146104d1578063ddb975e8146104e4578063e0f78307146104f7578063e606df871461050a578063f2fde38b1461051d57600080fd5b8063c37b9bcd1461047a578063d250f03a14610482578063d3e6a7ad14610495578063d611713e146104be57600080fd5b8063a2b40d19116100f4578063a2b40d1914610405578063ab4bdbc814610418578063b48ce6531461042b578063b84c13921461043e578063bd7133801461046757600080fd5b80638fd5baf7146103b9578063967ed63d146103cc57806397f8b3d3146103df57806399e5f896146103f257600080fd5b80633f6ecd48116101a85780636adbaf75116101775780636adbaf75146103675780637065cb481461037a578063715018a61461038d57806380f2540b146103955780638da5cb5b146103a857600080fd5b80633f6ecd481461030e5780634c7a7ad314610321578063627b253f1461033457806362e218781461034757600080fd5b8063173825d9116101ef578063173825d91461029a57806318160ddd146102ad5780632f54bf6e146102b6578063335c8b63146102f257806339e8d3ec146102fb57600080fd5b806301321c4d1461022157806306552ff3146102475780630c3e5c001461025c57806314cca36a1461026f575b600080fd5b61023461022f366004611a9a565b610530565b6040519081526020015b60405180910390f35b61025a610255366004611aca565b61055e565b005b61025a61026a366004611bcf565b61064a565b600254610282906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b61025a6102a8366004611c1d565b6106c5565b61023461c35081565b6102e26102c4366004611c1d565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161023e565b61023460065481565b61025a610309366004611c38565b61076a565b61023461031c366004611a9a565b6107a7565b61025a61032f366004611c1d565b6107d5565b600754610282906001600160a01b031681565b61035a610355366004611c5b565b61087f565b60405161023e9190611cc0565b61035a610375366004611a9a565b6108bb565b61025a610388366004611c1d565b6108c7565b61025a61093d565b61025a6103a3366004611c38565b610951565b6000546001600160a01b0316610282565b61035a6103c7366004611c1d565b61097b565b6102346103da366004611c1d565b6109e7565b61025a6103ed366004611bcf565b610a24565b61025a610400366004611ce1565b610a95565b61025a610413366004611a9a565b610ad7565b61025a610426366004611cfe565b610b9a565b610234610439366004611a9a565b610c21565b61028261044c366004611a9a565b600a602052600090815260409020546001600160a01b031681565b610234610475366004611c5b565b610c4e565b610234610c7f565b600154610282906001600160a01b031681565b6102826104a3366004611a9a565b6000908152600a60205260409020546001600160a01b031690565b61025a6104cc366004611c5b565b610c8f565b6102e26104df366004611a9a565b610c99565b61025a6104f2366004611c1d565b610cd2565b61025a610505366004611c1d565b610d75565b600554610282906001600160a01b031681565b61025a61052b366004611c1d565b610e18565b60008061053c836107a7565b9050808360065461054d9190611d62565b6105579190611d79565b9392505050565b610566610e91565b6001600160a01b0383166105955760405162461bcd60e51b815260040161058c90611d8c565b60405180910390fd5b6001600160a01b0382166105bb5760405162461bcd60e51b815260040161058c90611d8c565b6001600160a01b0381166105e15760405162461bcd60e51b815260040161058c90611d8c565b600580546001600160a01b03199081166001600160a01b039687161790915560078054821694861694909417909355600180548416928516929092178255600280549093169316929092179055336000908152600360205260409020805460ff19169091179055565b3360009081526003602052604090205460ff166106795760405162461bcd60e51b815260040161058c90611db6565b60005b82518110156106c057600083828151811061069957610699611ddc565b602002602001015190506106ad8184610eeb565b50806106b881611df2565b91505061067c565b505050565b3360009081526003602052604090205460ff166106f45760405162461bcd60e51b815260040161058c90611db6565b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561074f57600080fd5b505af4158015610763573d6000803e3d6000fd5b5050505050565b3360009081526003602052604090205460ff166107995760405162461bcd60e51b815260040161058c90611db6565b6107a38282610eeb565b5050565b600081600680546107b89190611e0b565b6006546107c59190611d79565b6107cf9190611d62565b92915050565b3360009081526003602052604090205460ff166108045760405162461bcd60e51b815260040161058c90611db6565b6001600160a01b03811661082a5760405162461bcd60e51b815260040161058c90611d8c565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020015b60405180910390a150565b3360009081526003602052604090205460609060ff166108b15760405162461bcd60e51b815260040161058c90611db6565b6105578383610f51565b60606107cf3383610f51565b3360009081526003602052604090205460ff166108f65760405162461bcd60e51b815260040161058c90611db6565b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401610737565b610945610e91565b61094f600061129c565b565b6001546001600160a01b031633146107995760405162461bcd60e51b815260040161058c90611e2d565b6001600160a01b0381166000908152600b60209081526040918290208054835181840281018401909452808452606093928301828280156109db57602002820191906000526020600020905b8154815260200190600101908083116109c7575b50505050509050919050565b3360009081526003602052604081205460ff16610a165760405162461bcd60e51b815260040161058c90611db6565b6107cf826112ec565b919050565b6001546001600160a01b03163314610a4e5760405162461bcd60e51b815260040161058c90611e2d565b60005b82518110156106c0576000838281518110610a6e57610a6e611ddc565b60200260200101519050610a828184610eeb565b5080610a8d81611df2565b915050610a51565b3360009081526003602052604090205460ff16610ac45760405162461bcd60e51b815260040161058c90611db6565b6009805460ff1916911515919091179055565b3360009081526003602052604090205460ff16610b065760405162461bcd60e51b815260040161058c90611db6565b60068190556001546040516370c41e3760e11b8152600481018390526001600160a01b039091169063e1883c6e90602401600060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b505050507f270b316b51ab2cf3a3bb8ca4d22e76a327d05e762fcaa8bd6afaf8cfde9270b78160405161087491815260200190565b60005b8151811015610be1576000828281518110610bba57610bba611ddc565b60200260200101519050610bce848261131f565b5080610bd981611df2565b915050610b9d565b507f1affae2fd35738ec8f6a4212f337c673b41aa2231f1bd5cfeb94463a93ace1f1338383604051610c1593929190611e7e565b60405180910390a15050565b600080610c2d836107a7565b90506000610c3a84610530565b9050610c468183611eb3565b949350505050565b600b6020528160005260406000208181548110610c6a57600080fd5b90600052602060002001600091509150505481565b6000610c8a336112ec565b905090565b6107a3828261131f565b6000808211610cba5760405162461bcd60e51b815260040161058c90611ec6565b61c35082600854610ccb9190611eb3565b1092915050565b3360009081526003602052604090205460ff16610d015760405162461bcd60e51b815260040161058c90611db6565b6001600160a01b038116610d275760405162461bcd60e51b815260040161058c90611d8c565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa20290602001610874565b3360009081526003602052604090205460ff16610da45760405162461bcd60e51b815260040161058c90611db6565b6001600160a01b038116610dca5760405162461bcd60e51b815260040161058c90611d8c565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f7161c7a7090d78e8031fca87e845a86b39e0eb9c15436933d2d4ce7f4520c4a590602001610874565b610e20610e91565b6001600160a01b038116610e855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058c565b610e8e8161129c565b50565b6000546001600160a01b0316331461094f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058c565b610ef58282611447565b6000828152600a602090815260409182902080546001600160a01b031916905581516001600160a01b03841681529081018490527f459bdaa71b6c253b49d34a7622dc4c6c1c416c0567571c068b392ba7172ddd4c9101610c15565b60606001600160a01b038316610f795760405162461bcd60e51b815260040161058c90611d8c565b60008211610f995760405162461bcd60e51b815260040161058c90611ec6565b61c35082600854610faa9190611eb3565b1061101d5760405162461bcd60e51b815260206004820152603c60248201527f546865206e756d626572206f66207061636b7320796f752077616e7420746f2060448201527f62757920657863656564732074686f736520617661696c61626c652e00000000606482015260840161058c565b60008267ffffffffffffffff81111561103857611038611b1e565b604051908082528060200260200182016040528015611061578160200160208202803683370190505b50905060005b838110156111555760085461c35081106110c35760405162461bcd60e51b815260206004820152601860248201527f546865726520617265206e6f206d6f7265207061636b732e0000000000000000604482015260640161058c565b6001600860008282546110d69190611eb3565b90915550506000818152600a6020908152604080832080546001600160a01b0319166001600160a01b038b169081179091558352600b8252822080546001810182559083529120018190558251819084908490811061113757611137611ddc565b6020908102919091010152508061114d81611df2565b915050611067565b5060006111628585611586565b9050806111e65760405162461bcd60e51b815260206004820152604660248201527f546865207472616e73666572732072656c6174656420746f207468652070757260448201527f6368617365206f66207061636b7320636f756c64206e6f7420626520636f6d706064820152653632ba32b21760d11b608482015260a40161058c565b8360010361125a577fc79cad949a408373456da7a9e88e8114102aa00e03a69733c70e3a0d95944ca7858360008151811061122357611223611ddc565b602002602001015160405161124d9291906001600160a01b03929092168252602082015260400190565b60405180910390a1611294565b7f8ae8b18ed6d499ec84f68235bf3512b3db155f7911789805d36093467e5971c9858360405161128b929190611f12565b60405180910390a15b509392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806112fa836001610f51565b90508060008151811061130f5761130f611ddc565b6020026020010151915050919050565b6001600160a01b0382166113455760405162461bcd60e51b815260040161058c90611d8c565b6000818152600a60205260409020546001600160a01b031633146113ab5760405162461bcd60e51b815260206004820152601760248201527f54486973207061636b206973206e6f7420796f7572732e000000000000000000604482015260640161058c565b6000818152600a6020526040902080546001600160a01b0319166001600160a01b0384161790556113dc8133611447565b6001600160a01b0382166000818152600b6020908152604080832080546001810182559084529282902090920184905581513381529081019290925281018290527f16e5698e3d85c69c8d8cdb9a21893b33518e24d8cb69d9944d4bfd233464c3a290606001610c15565b6001600160a01b0381166000908152600b6020526040812054905b81811015611580576001600160a01b0383166000908152600b6020526040902080548591908390811061149757611497611ddc565b90600052602060002001540361156e576001600160a01b0383166000908152600b6020526040902080546114cd90600190611d79565b815481106114dd576114dd611ddc565b9060005260206000200154600b6000856001600160a01b03166001600160a01b03168152602001908152602001600020828154811061151e5761151e611ddc565b60009182526020808320909101929092556001600160a01b0385168152600b9091526040902080548061155357611553611f36565b60019003818190600052602060002001600090559055611580565b8061157881611df2565b915050611462565b50505050565b600080611592836107a7565b9050600061159f84610530565b600154604051630bc639c960e31b8152600481018590529192506001600160a01b031690635e31ce4890602401600060405180830381600087803b1580156115e657600080fd5b505af11580156115fa573d6000803e3d6000fd5b505060095460ff16159150611a8f905057600554604051636eb1769f60e11b81526001600160a01b03878116600483015230602483015290911690600090829063dd62ed3e90604401602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190611f4c565b90506116908385611eb3565b8110156117165760405162461bcd60e51b815260206004820152604860248201527f496e73756666696369656e7420616c6c6f77616e636520746f207472616e736660448201527f6572207072697a657320616d6f756e7420616e64204e4f46204163636f756e746064820152671030b6b7bab73a1760c11b608482015260a40161058c565b6040516370a0823160e01b81526001600160a01b0388811660048301528591908416906370a0823190602401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190611f4c565b10156117e95760405162461bcd60e51b815260206004820152602f60248201527f496e73756666696369656e742062616c616e636520746f207472616e7366657260448201526e10383934bd32b99030b6b7bab73a1760891b606482015260840161058c565b6040516370a0823160e01b81526001600160a01b0388811660048301528491908416906370a0823190602401602060405180830381865afa158015611832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118569190611f4c565b10156118bc5760405162461bcd60e51b815260206004820152602f60248201527f496e73756666696369656e742062616c616e636520746f207472616e7366657260448201526e10383937b334ba1030b6b7bab73a1760891b606482015260840161058c565b6001546040516323b872dd60e01b81526001600160a01b0389811660048301529182166024820152604481018690526000918416906323b872dd906064016020604051808303816000875af1158015611919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193d9190611f65565b9050806119a65760405162461bcd60e51b815260206004820152603160248201527f4572726f722073656e64696e67207072697a6520616d6f756e7420746f20676160448201527036b6b0a1b0b93239a1b7b73a3930b1ba1760791b606482015260840161058c565b6007546040516323b872dd60e01b81526001600160a01b038a811660048301529182166024820152604481018690526000918516906323b872dd906064016020604051808303816000875af1158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a279190611f65565b905080611a8a5760405162461bcd60e51b815260206004820152602b60248201527f4572726f722073656e64696e672070726f66697420616d6f756e7420746f204e60448201526a37a31030b1b1b7bab73a1760a91b606482015260840161058c565b505050505b506001949350505050565b600060208284031215611aac57600080fd5b5035919050565b80356001600160a01b0381168114610a1f57600080fd5b60008060008060808587031215611ae057600080fd5b611ae985611ab3565b9350611af760208601611ab3565b9250611b0560408601611ab3565b9150611b1360608601611ab3565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611b4557600080fd5b8135602067ffffffffffffffff80831115611b6257611b62611b1e565b8260051b604051601f19603f83011681018181108482111715611b8757611b87611b1e565b604052938452858101830193838101925087851115611ba557600080fd5b83870191505b84821015611bc457813583529183019190830190611bab565b979650505050505050565b60008060408385031215611be257600080fd5b823567ffffffffffffffff811115611bf957600080fd5b611c0585828601611b34565b925050611c1460208401611ab3565b90509250929050565b600060208284031215611c2f57600080fd5b61055782611ab3565b60008060408385031215611c4b57600080fd5b82359150611c1460208401611ab3565b60008060408385031215611c6e57600080fd5b611c7783611ab3565b946020939093013593505050565b600081518084526020808501945080840160005b83811015611cb557815187529582019590820190600101611c99565b509495945050505050565b6020815260006105576020830184611c85565b8015158114610e8e57600080fd5b600060208284031215611cf357600080fd5b813561055781611cd3565b60008060408385031215611d1157600080fd5b611d1a83611ab3565b9150602083013567ffffffffffffffff811115611d3657600080fd5b611d4285828601611b34565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107cf576107cf611d4c565b818103818111156107cf576107cf611d4c565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201611e0457611e04611d4c565b5060010190565b600082611e2857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526031908201527f4f6e6c792067616d6d6120636172647320636f6e74726163742063616e2063616040820152703636103a3434b990333ab731ba34b7b71760791b606082015260800190565b6001600160a01b03848116825283166020820152606060408201819052600090611eaa90830184611c85565b95945050505050565b808201808211156107cf576107cf611d4c565b6020808252602c908201527f4e756d626572206f66207061636b732073686f756c642062652067726561746560408201526b39103a3430b7103d32b9379760a11b606082015260800190565b6001600160a01b0383168152604060208201819052600090610c4690830184611c85565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611f5e57600080fd5b5051919050565b600060208284031215611f7757600080fd5b815161055781611cd356fea2646970667358221220c72b2393e3bcd3deb50f5fff31aba6f60a77f67288c45d0a79012f6e873e6a6864736f6c63430008140033", - "linkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 1973 - }, - { - "length": 20, - "start": 2487 - } - ] - } - }, - "deployedLinkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 1817 - }, - { - "length": 20, - "start": 2331 - } - ] - } - } -} diff --git a/src/context/abis/GammaTickets.v1.sol/NofGammaTicketsV1.json b/src/context/abis/GammaTickets.v1.sol/NofGammaTicketsV1.json deleted file mode 100644 index 62a651f9..00000000 --- a/src/context/abis/GammaTickets.v1.sol/NofGammaTicketsV1.json +++ /dev/null @@ -1,564 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NofGammaTicketsV1", - "sourceName": "contracts/gamma/GammaTickets.v1.sol", - "abi": [ - { - "anonymous": false, - "inputs": [], - "name": "AllTicketsRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaCardsContract", - "type": "address" - } - ], - "name": "NewGammaCardsContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaPacksContract", - "type": "address" - } - ], - "name": "NewGammaPacksContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "TicketGenerated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "WinnerObtained", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "deleteAllTickets", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "gammaCardsContract", - "outputs": [ - { - "internalType": "contract IGammaCardsContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "gammaPacksContract", - "outputs": [ - { - "internalType": "contract IgammaPacksContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "generateTicket", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getLotteryWinner", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getTickets", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "internalType": "struct NofGammaTicketsV1.Ticket[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getTicketsByUser", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "internalType": "struct NofGammaTicketsV1.Ticket[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getWinner", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaPacksContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_gammaCardsContract", - "type": "address" - } - ], - "name": "init", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_ownerToRemove", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaCardsContract", - "type": "address" - } - ], - "name": "setGammaCardsContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaPacksContract", - "type": "address" - } - ], - "name": "setGammaPacksContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "tickets", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "ticketsByUser", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "ticketsTotalCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "winner", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "ticketId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "ticketCounter", - "type": "uint256" - }, - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040526000600b5534801561001557600080fd5b5061001f33610024565b610074565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6110f7806100836000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063dfbf53ae1161007c578063dfbf53ae1461029e578063e5b0b100146102bd578063e6afe6bc146102d0578063f09a4016146102e7578063f2fde38b146102fa578063fa8213d31461030d57600080fd5b80638da5cb5b146102575780638e7ea5b214610268578063b2d55c1c14610270578063cafaa47314610278578063d250f03a1461028b57600080fd5b80634c7a7ad3116100ff5780634c7a7ad3146102015780634ed026221461021457806350b44712146102295780637065cb481461023c578063715018a61461024f57600080fd5b806304ac05cf1461013c578063173825d91461017d5780632f54bf6e146101925780632f9e026a146101ce578063306e4118146101f9575b600080fd5b61014f61014a366004610ebc565b610320565b604080519485526020850193909352918301526001600160a01b031660608201526080015b60405180910390f35b61019061018b366004610ee6565b61036f565b005b6101be6101a0366004610ee6565b6001600160a01b031660009081526003602052604090205460ff1690565b6040519015158152602001610174565b6002546101e1906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b61019061041d565b61019061020f366004610ee6565b6104f0565b61021c61059a565b6040516101749190610f08565b61014f610237366004610f75565b610624565b61019061024a366004610ee6565b610667565b6101906106dd565b6000546001600160a01b03166101e1565b61014f6106f1565b61014f61070d565b610190610286366004610ee6565b6108ef565b6001546101e1906001600160a01b031681565b60065460075460085460095461014f939291906001600160a01b031684565b61021c6102cb366004610ee6565b610992565b6102d9600b5481565b604051908152602001610174565b6101906102f5366004610f8e565b610a32565b610190610308366004610ee6565b610ace565b61019061031b366004610ee6565b610b47565b600a602052816000526040600020818154811061033c57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526003602052604090205460ff166103a75760405162461bcd60e51b815260040161039e90610fc1565b60405180910390fd5b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561040257600080fd5b505af4158015610416573d6000803e3d6000fd5b5050505050565b6002546001600160a01b031633146104475760405162461bcd60e51b815260040161039e90610fe7565b61045360056000610e4c565b6000600b8190555b6005548110156104c457600a60006005838154811061047c5761047c611038565b60009182526020808320600360049093020191909101546001600160a01b0316835282019290925260400181206104b291610e4c565b806104bc8161104e565b91505061045b565b506040517fc3ed638c0e10b967891ee71bc361fabc770df50e93331cdf41fddc37deb28b5b90600090a1565b3360009081526003602052604090205460ff1661051f5760405162461bcd60e51b815260040161039e90610fc1565b6001600160a01b0381166105455760405162461bcd60e51b815260040161039e90611075565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020015b60405180910390a150565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561061b57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b0316606083015290835290920191016105be565b50505050905090565b6005818154811061063457600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491935091906001600160a01b031684565b3360009081526003602052604090205460ff166106965760405162461bcd60e51b815260040161039e90610fc1565b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae4906044016103ea565b6106e5610da2565b6106ef6000610dfc565b565b6006546007546008546009546001600160a01b03165b90919293565b6002546000908190819081906001600160a01b031633146107405760405162461bcd60e51b815260040161039e90610fe7565b60055461079d5760405162461bcd60e51b815260206004820152602560248201527f4e6f207469636b65747320617661696c61626c6520666f7220746865206c6f746044820152643a32b93c9760d91b606482015260840161039e565b600654156107c8575050600654600754600854600954929450909250906001600160a01b0316610707565b60055460408051426020820152449181019190915260608101829052600091906080016040516020818303038152906040528051906020012060001c61080e919061109f565b90506005818154811061082357610823611038565b60009182526020909120600490910201805460068190556001820154600781905560028301546008819055600390930154600980546001600160a01b0319166001600160a01b0390921691821790556040517f314d0f2749f4f47e45bd658d5f379146bedd6ac53f8e6f0f63c5fe4ab14bc2aa946108c39493929091938452602084019290925260408301526001600160a01b0316606082015260800190565b60405180910390a15050600654600754600854600954929691955093506001600160a01b039091169150565b3360009081526003602052604090205460ff1661091e5760405162461bcd60e51b815260040161039e90610fc1565b6001600160a01b0381166109445760405162461bcd60e51b815260040161039e90611075565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f9060200161058f565b6001600160a01b0381166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610a2757600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b0316606083015290835290920191016109ca565b505050509050919050565b610a3a610da2565b6001600160a01b038216610a605760405162461bcd60e51b815260040161039e90611075565b6001600160a01b038116610a865760405162461bcd60e51b815260040161039e90611075565b600280546001600160a01b039384166001600160a01b03199182161790915560018054929093169116178155336000908152600360205260409020805460ff19169091179055565b610ad6610da2565b6001600160a01b038116610b3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039e565b610b4481610dfc565b50565b6001546001600160a01b03163314610bbb5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792067616d6d6120636172647320636f6e74726163742063616e2063616044820152703636103a3434b990333ab731ba34b7b71760791b606482015260840161039e565b600b54604080514260208201819052918101839052606084811b6bffffffffffffffffffffffff19169082015260009060740160408051601f1981840301815282825280516020918201206080840183528584528382018181528484018881526001600160a01b03808b1660608801818152600580546001818101835560009283528b5160049283027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081019190915588517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015587517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db282015584517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db390910180549188166001600160a01b0319928316179055948352600a8a529982208054808c0182559083529882208b519990910201978855945197870197909755915160028601559451600394909401805494909516931692909217909255600b805492945090610d4a8361104e565b909155505060408051848152602081018490529081018590526001600160a01b038616907f0493d9379fb7ffa47303ca5a377a34a8034f42db6d986fe1f57b0b800fd210919060600160405180910390a25050505050565b6000546001600160a01b031633146106ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825560040290600052602060002090810190610b4491905b80821115610e9c5760008082556001820181905560028201556003810180546001600160a01b0319169055600401610e69565b5090565b80356001600160a01b0381168114610eb757600080fd5b919050565b60008060408385031215610ecf57600080fd5b610ed883610ea0565b946020939093013593505050565b600060208284031215610ef857600080fd5b610f0182610ea0565b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610f6857815180518552868101518786015285810151868601526060908101516001600160a01b03169085015260809093019290850190600101610f25565b5091979650505050505050565b600060208284031215610f8757600080fd5b5035919050565b60008060408385031215610fa157600080fd5b610faa83610ea0565b9150610fb860208401610ea0565b90509250929050565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b60208082526031908201527f4f6e6c792067616d6d61207061636b7320636f6e74726163742063616e2063616040820152703636103a3434b990333ab731ba34b7b71760791b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161106e57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b6000826110bc57634e487b7160e01b600052601260045260246000fd5b50069056fea2646970667358221220cf6908679797d80ede0649852205b6283ff297198660c59b234d3069ef46f77c64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063dfbf53ae1161007c578063dfbf53ae1461029e578063e5b0b100146102bd578063e6afe6bc146102d0578063f09a4016146102e7578063f2fde38b146102fa578063fa8213d31461030d57600080fd5b80638da5cb5b146102575780638e7ea5b214610268578063b2d55c1c14610270578063cafaa47314610278578063d250f03a1461028b57600080fd5b80634c7a7ad3116100ff5780634c7a7ad3146102015780634ed026221461021457806350b44712146102295780637065cb481461023c578063715018a61461024f57600080fd5b806304ac05cf1461013c578063173825d91461017d5780632f54bf6e146101925780632f9e026a146101ce578063306e4118146101f9575b600080fd5b61014f61014a366004610ebc565b610320565b604080519485526020850193909352918301526001600160a01b031660608201526080015b60405180910390f35b61019061018b366004610ee6565b61036f565b005b6101be6101a0366004610ee6565b6001600160a01b031660009081526003602052604090205460ff1690565b6040519015158152602001610174565b6002546101e1906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b61019061041d565b61019061020f366004610ee6565b6104f0565b61021c61059a565b6040516101749190610f08565b61014f610237366004610f75565b610624565b61019061024a366004610ee6565b610667565b6101906106dd565b6000546001600160a01b03166101e1565b61014f6106f1565b61014f61070d565b610190610286366004610ee6565b6108ef565b6001546101e1906001600160a01b031681565b60065460075460085460095461014f939291906001600160a01b031684565b61021c6102cb366004610ee6565b610992565b6102d9600b5481565b604051908152602001610174565b6101906102f5366004610f8e565b610a32565b610190610308366004610ee6565b610ace565b61019061031b366004610ee6565b610b47565b600a602052816000526040600020818154811061033c57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526003602052604090205460ff166103a75760405162461bcd60e51b815260040161039e90610fc1565b60405180910390fd5b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561040257600080fd5b505af4158015610416573d6000803e3d6000fd5b5050505050565b6002546001600160a01b031633146104475760405162461bcd60e51b815260040161039e90610fe7565b61045360056000610e4c565b6000600b8190555b6005548110156104c457600a60006005838154811061047c5761047c611038565b60009182526020808320600360049093020191909101546001600160a01b0316835282019290925260400181206104b291610e4c565b806104bc8161104e565b91505061045b565b506040517fc3ed638c0e10b967891ee71bc361fabc770df50e93331cdf41fddc37deb28b5b90600090a1565b3360009081526003602052604090205460ff1661051f5760405162461bcd60e51b815260040161039e90610fc1565b6001600160a01b0381166105455760405162461bcd60e51b815260040161039e90611075565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020015b60405180910390a150565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561061b57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b0316606083015290835290920191016105be565b50505050905090565b6005818154811061063457600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491935091906001600160a01b031684565b3360009081526003602052604090205460ff166106965760405162461bcd60e51b815260040161039e90610fc1565b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae4906044016103ea565b6106e5610da2565b6106ef6000610dfc565b565b6006546007546008546009546001600160a01b03165b90919293565b6002546000908190819081906001600160a01b031633146107405760405162461bcd60e51b815260040161039e90610fe7565b60055461079d5760405162461bcd60e51b815260206004820152602560248201527f4e6f207469636b65747320617661696c61626c6520666f7220746865206c6f746044820152643a32b93c9760d91b606482015260840161039e565b600654156107c8575050600654600754600854600954929450909250906001600160a01b0316610707565b60055460408051426020820152449181019190915260608101829052600091906080016040516020818303038152906040528051906020012060001c61080e919061109f565b90506005818154811061082357610823611038565b60009182526020909120600490910201805460068190556001820154600781905560028301546008819055600390930154600980546001600160a01b0319166001600160a01b0390921691821790556040517f314d0f2749f4f47e45bd658d5f379146bedd6ac53f8e6f0f63c5fe4ab14bc2aa946108c39493929091938452602084019290925260408301526001600160a01b0316606082015260800190565b60405180910390a15050600654600754600854600954929691955093506001600160a01b039091169150565b3360009081526003602052604090205460ff1661091e5760405162461bcd60e51b815260040161039e90610fc1565b6001600160a01b0381166109445760405162461bcd60e51b815260040161039e90611075565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f9060200161058f565b6001600160a01b0381166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610a2757600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b0316606083015290835290920191016109ca565b505050509050919050565b610a3a610da2565b6001600160a01b038216610a605760405162461bcd60e51b815260040161039e90611075565b6001600160a01b038116610a865760405162461bcd60e51b815260040161039e90611075565b600280546001600160a01b039384166001600160a01b03199182161790915560018054929093169116178155336000908152600360205260409020805460ff19169091179055565b610ad6610da2565b6001600160a01b038116610b3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039e565b610b4481610dfc565b50565b6001546001600160a01b03163314610bbb5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792067616d6d6120636172647320636f6e74726163742063616e2063616044820152703636103a3434b990333ab731ba34b7b71760791b606482015260840161039e565b600b54604080514260208201819052918101839052606084811b6bffffffffffffffffffffffff19169082015260009060740160408051601f1981840301815282825280516020918201206080840183528584528382018181528484018881526001600160a01b03808b1660608801818152600580546001818101835560009283528b5160049283027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081019190915588517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015587517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db282015584517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db390910180549188166001600160a01b0319928316179055948352600a8a529982208054808c0182559083529882208b519990910201978855945197870197909755915160028601559451600394909401805494909516931692909217909255600b805492945090610d4a8361104e565b909155505060408051848152602081018490529081018590526001600160a01b038616907f0493d9379fb7ffa47303ca5a377a34a8034f42db6d986fe1f57b0b800fd210919060600160405180910390a25050505050565b6000546001600160a01b031633146106ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825560040290600052602060002090810190610b4491905b80821115610e9c5760008082556001820181905560028201556003810180546001600160a01b0319169055600401610e69565b5090565b80356001600160a01b0381168114610eb757600080fd5b919050565b60008060408385031215610ecf57600080fd5b610ed883610ea0565b946020939093013593505050565b600060208284031215610ef857600080fd5b610f0182610ea0565b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610f6857815180518552868101518786015285810151868601526060908101516001600160a01b03169085015260809093019290850190600101610f25565b5091979650505050505050565b600060208284031215610f8757600080fd5b5035919050565b60008060408385031215610fa157600080fd5b610faa83610ea0565b9150610fb860208401610ea0565b90509250929050565b6020808252600c908201526b27b7363c9037bbb732b9399760a11b604082015260600190565b60208082526031908201527f4f6e6c792067616d6d61207061636b7320636f6e74726163742063616e2063616040820152703636103a3434b990333ab731ba34b7b71760791b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161106e57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b6000826110bc57634e487b7160e01b600052601260045260246000fd5b50069056fea2646970667358221220cf6908679797d80ede0649852205b6283ff297198660c59b234d3069ef46f77c64736f6c63430008140033", - "linkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 1103 - }, - { - "length": 20, - "start": 1854 - } - ] - } - }, - "deployedLinkReferences": { - "contracts/gamma/libs/LibControlMgmt.sol": { - "LibControlMgmt": [ - { - "length": 20, - "start": 972 - }, - { - "length": 20, - "start": 1723 - } - ] - } - } -} diff --git a/src/context/abis/Alpha.v3.sol/NofAlphaV3.json b/src/context/abis/alpha/Alpha.v3.sol/NofAlphaV3.json similarity index 100% rename from src/context/abis/Alpha.v3.sol/NofAlphaV3.json rename to src/context/abis/alpha/Alpha.v3.sol/NofAlphaV3.json diff --git a/src/context/abis/ContextMixin.v2.sol/ContextMixinV2.json b/src/context/abis/alpha/ContextMixin.v2.sol/ContextMixinV2.json similarity index 100% rename from src/context/abis/ContextMixin.v2.sol/ContextMixinV2.json rename to src/context/abis/alpha/ContextMixin.v2.sol/ContextMixinV2.json diff --git a/src/context/abis/GammaCards.v5.sol/IgammaOffersContract.json b/src/context/abis/gamma/GammaCards.v5.sol/IgammaOffersContract.json similarity index 100% rename from src/context/abis/GammaCards.v5.sol/IgammaOffersContract.json rename to src/context/abis/gamma/GammaCards.v5.sol/IgammaOffersContract.json diff --git a/src/context/abis/GammaCards.v5.sol/IgammaPacksContract.json b/src/context/abis/gamma/GammaCards.v5.sol/IgammaPacksContract.json similarity index 100% rename from src/context/abis/GammaCards.v5.sol/IgammaPacksContract.json rename to src/context/abis/gamma/GammaCards.v5.sol/IgammaPacksContract.json diff --git a/src/context/abis/GammaCards.v5.sol/IgammaTicketsContract.json b/src/context/abis/gamma/GammaCards.v5.sol/IgammaTicketsContract.json similarity index 100% rename from src/context/abis/GammaCards.v5.sol/IgammaTicketsContract.json rename to src/context/abis/gamma/GammaCards.v5.sol/IgammaTicketsContract.json diff --git a/src/context/abis/gamma/GammaCards.v5.sol/NofGammaCardsV5.json b/src/context/abis/gamma/GammaCards.v5.sol/NofGammaCardsV5.json new file mode 100644 index 00000000..b1e4fb31 --- /dev/null +++ b/src/context/abis/gamma/GammaCards.v5.sol/NofGammaCardsV5.json @@ -0,0 +1,1884 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NofGammaCardsV5", + "sourceName": "contracts/gamma/GammaCards.v5.sol", + "abi": [ + { + "inputs": [], + "name": "CannotRemoveUserOffers", + "type": "error" + }, + { + "inputs": [], + "name": "CardLimitExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "IncorrectPrizeAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientCards", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientFunds", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCardNumber", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTransfer", + "type": "error" + }, + { + "inputs": [], + "name": "MustCompleteAlbum", + "type": "error" + }, + { + "inputs": [], + "name": "NotYourPack", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyGammaPacksContract", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyOffersContract", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyOwners", + "type": "error" + }, + { + "inputs": [], + "name": "UserDoesNotHaveCardOrAlbum", + "type": "error" + }, + { + "inputs": [], + "name": "WrongPacksQuantity", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "albumClass", + "type": "uint8" + } + ], + "name": "AlbumCompleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "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": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "cardTokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "albumTokenId", + "type": "uint256" + } + ], + "name": "CardPasted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "CardTransfered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8[]", + "name": "cardsNumber", + "type": "uint8[]" + } + ], + "name": "CardsBurned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8[]", + "name": "cardNumber", + "type": "uint8[]" + } + ], + "name": "CardsTransfered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newGammaOffersContract", + "type": "address" + } + ], + "name": "NewGammaOffersContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newGammaPacksContract", + "type": "address" + } + ], + "name": "NewGammaPacksContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newGammaTicketContract", + "type": "address" + } + ], + "name": "NewGammaTicketsContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newSigner", + "type": "address" + } + ], + "name": "NewSigner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "newMainUri", + "type": "string" + }, + { + "indexed": true, + "internalType": "string", + "name": "newSecondaryUri", + "type": "string" + } + ], + "name": "NewUris", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumberFrom", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumberTo", + "type": "uint8" + } + ], + "name": "OfferCardsExchanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8[]", + "name": "packData", + "type": "uint8[]" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "packNumber", + "type": "uint256" + } + ], + "name": "PackOpened", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DAI_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newSigner", + "type": "address" + } + ], + "name": "addSigner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[]", + "name": "cardNumbers", + "type": "uint8[]" + } + ], + "name": "burnCards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_maxPacksToOpenAtOnce", + "type": "uint8" + } + ], + "name": "changeMaxPacksToOpenAtOnce", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPackPrice", + "type": "uint256" + } + ], + "name": "changePackPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "required", + "type": "bool" + } + ], + "name": "changeRequireOfferValidationInMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "required", + "type": "bool" + } + ], + "name": "changeRequireOfferValidationInTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "required", + "type": "bool" + } + ], + "name": "changeRequireOpenPackSignerValidation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumberFrom", + "type": "uint8" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumberTo", + "type": "uint8" + } + ], + "name": "exchangeCardsOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "finishAlbum", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gammaOffersContract", + "outputs": [ + { + "internalType": "contract IgammaOffersContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gammaPacksContract", + "outputs": [ + { + "internalType": "contract IgammaPacksContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gammaTicketsContract", + "outputs": [ + { + "internalType": "contract IgammaTicketsContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getBurnedCardQttyByUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNum", + "type": "uint8" + } + ], + "name": "getCardQuantityByUser", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getCardsByUser", + "outputs": [ + { + "internalType": "uint8[]", + "name": "", + "type": "uint8[]" + }, + { + "internalType": "uint8[]", + "name": "", + "type": "uint8[]" + }, + { + "internalType": "bool[]", + "name": "", + "type": "bool[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLotteryPrize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNum", + "type": "uint8" + } + ], + "name": "hasCard", + "outputs": [ + { + "internalType": "bool", + "name": "has", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "hasCardByOffer", + "outputs": [ + { + "internalType": "bool", + "name": "has", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_daiTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_gammaPacksContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_gammaOffersContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_gammaTicketsContract", + "type": "address" + }, + { + "internalType": "string", + "name": "_baseUri", + "type": "string" + }, + { + "internalType": "address", + "name": "_signer", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNum", + "type": "uint8" + } + ], + "name": "mintCard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "packNumber", + "type": "uint256" + }, + { + "internalType": "uint8[]", + "name": "packData", + "type": "uint8[]" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "openPack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "packsQuantity", + "type": "uint8" + }, + { + "internalType": "uint256[]", + "name": "packsNumber", + "type": "uint256[]" + }, + { + "internalType": "uint8[][]", + "name": "packsData", + "type": "uint8[][]" + }, + { + "internalType": "bytes[]", + "name": "signatures", + "type": "bytes[]" + } + ], + "name": "openPacks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "removeCardByOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ownerToRemove", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_signerToRemove", + "type": "address" + } + ], + "name": "removeSigner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "restoreCardByOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "s_baseUri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "s_burnedCards", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "s_cards", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "number", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "pasted", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "class", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "completion", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "s_cardsByUser", + "outputs": [ + { + "internalType": "uint8", + "name": "amount", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cardNumber", + "type": "uint256" + } + ], + "name": "s_cardsInventory", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_lotteryPrizePercentage", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_mainAlbumPrize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_mainUri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_maxPacksToOpenAtOnce", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_packPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_prizesBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_requireOfferValidationInMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_requireOfferValidationInTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_requireOpenPackSignerValidation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_secondaryAlbumPrize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_secondaryUri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_tokenIdCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "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": "address", + "name": "_gammaOffersContract", + "type": "address" + } + ], + "name": "setGammaOffersContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaPacksContract", + "type": "address" + } + ], + "name": "setGammaPacksContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaTicketsContract", + "type": "address" + } + ], + "name": "setGammaTicketsContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "amount", + "type": "uint8" + } + ], + "name": "setLotteryPrizePercentage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setMainAlbumPrize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setPrizesBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setSecondaryAlbumPrize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newMainUri", + "type": "string" + }, + { + "internalType": "string", + "name": "newSecondaryUri", + "type": "string" + } + ], + "name": "setUris", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "testAddCards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "packNumber", + "type": "uint256" + }, + { + "internalType": "uint8[]", + "name": "packData", + "type": "uint8[]" + } + ], + "name": "testOpenPack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "transferCard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint8[]", + "name": "cardNumbers", + "type": "uint8[]" + } + ], + "name": "transferCards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "packNumber", + "type": "uint256" + }, + { + "internalType": "uint8[]", + "name": "packData", + "type": "uint8[]" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyPackSigner", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052600f805461ffff191661320a1790556710a741a462780000601155600060125567d02ab486cedc0000601355670de0b6b3a76400006014556018805462ffff001916620101001790553480156200005a57600080fd5b506040518060400160405280600a81526020016947616d6d61436172647360b01b815250604051806040016040528060068152602001654e4f465f474360d01b8152508160009081620000ae9190620001db565b506001620000bd8282620001db565b505050620000da620000d4620000e060201b60201c565b620000e4565b620002a7565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200016157607f821691505b6020821081036200018257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d657600081815260208120601f850160051c81016020861015620001b15750805b601f850160051c820191505b81811015620001d257828155600101620001bd565b5050505b505050565b81516001600160401b03811115620001f757620001f762000136565b6200020f816200020884546200014c565b8462000188565b602080601f8311600181146200024757600084156200022e5750858301515b600019600386901b1c1916600185901b178555620001d2565b600085815260208120601f198616915b82811015620002785788860151825594840194600190910190840162000257565b5085821015620002975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615a3d80620002b76000396000f3fe608060405234801561001057600080fd5b506004361061046a5760003560e01c806379e8dadc1161024c578063ad1684fa11610146578063dbfc05cf116100c3578063e8a7e31d11610087578063e8a7e31d14610a82578063e985e9c514610a8a578063eb12d61e14610ac6578063f2fde38b14610ad9578063f98fd28314610aec57600080fd5b8063dbfc05cf14610a23578063ddb975e814610a36578063e1883c6e14610a49578063e4ae0b9b14610a5c578063e606df8714610a6957600080fd5b8063c87b56dd1161010a578063c87b56dd146109d9578063cafaa473146109ec578063d322b563146109ff578063d7093f4014610a12578063d780c47714610a1b57600080fd5b8063ad1684fa14610984578063b352618514610997578063b88d4fde146109a0578063ba6c0fbc146109b3578063bf400a6a146109c657600080fd5b80638da5cb5b116101d45780639ff26efd116101985780639ff26efd14610910578063a1af8ad41461093e578063a22cb46514610951578063a419811d14610964578063ab5351601461097757600080fd5b80638da5cb5b146108c95780639038f414146108da57806395d89b41146108e25780639a5613ad146108ea5780639c7f707f146108fd57600080fd5b80637df73e271161021b5780637df73e271461084e57806382d8a1181461087a578063886eb60f1461088357806388e0ef80146108965780638bf670c8146108b657600080fd5b806379e8dadc1461080d5780637ce65f7b146108155780637cf86b72146108285780637de99bd91461083b57600080fd5b8063267b841d116103685780635e31ce48116102e55780637065cb48116102a95780637065cb48146107b957806370a08231146107cc578063715018a6146107df5780637155a3ac146107e75780637232d7d4146107fa57600080fd5b80635e31ce48146107655780636352211e14610778578063656bd0ad1461078b57806368cc5bc1146107945780636d0af178146107a757600080fd5b80634039327e1161032c5780634039327e146106b257806342842e0e146106ba57806342966c68146106cd5780634c03cd0b146106e05780635312ea8e1461075257600080fd5b8063267b841d1461063a5780632ca699e71461064d5780632f54bf6e146106605780632f9e026a1461068c57806330f5cc581461069f57600080fd5b8063147baac7116103f6578063203335f6116103ba578063203335f6146105e557806320965a5f146105f857806321a7c6b01461060b57806323b872dd14610614578063241a08fe1461062757600080fd5b8063147baac71461057557806314cca36a14610587578063155e2f921461059a5780631585cc4e146105ad578063173825d9146105d257600080fd5b8063081812fc1161043d578063081812fc146104fc578063095ea7b3146105275780630e316ab71461053c578063128916dc1461054f5780631306952c1461056257600080fd5b806301ffc9a71461046f5780630435dcaf1461049757806306fdde03146104b957806307b2e246146104ce575b600080fd5b61048261047d366004614a27565b610aff565b60405190151581526020015b60405180910390f35b6104aa6104a5366004614a59565b610b10565b60405161048e93929190614ab4565b6104c1610ec0565b60405161048e9190614b6f565b6104ee6104dc366004614a59565b601b6020526000908152604090205481565b60405190815260200161048e565b61050f61050a366004614b82565b610f52565b6040516001600160a01b03909116815260200161048e565b61053a610535366004614b9b565b610f79565b005b61053a61054a366004614a59565b611093565b61053a61055d366004614a59565b611139565b61050f610570366004614cb8565b6111dc565b60185461048290610100900460ff1681565b600a5461050f906001600160a01b031681565b61053a6105a8366004614d52565b61126a565b6105c06105bb366004614d52565b6112e7565b60405160ff909116815260200161048e565b61053a6105e0366004614a59565b611341565b61053a6105f3366004614e51565b6113b8565b61053a610606366004614f47565b611477565b6104ee60135481565b61053a610622366004614f88565b611a93565b61053a610635366004614fc9565b611ac5565b61053a610648366004614cb8565b611b0b565b61053a61065b366004614d52565b611b1e565b61048261066e366004614a59565b6001600160a01b03166000908152600b602052604090205460ff1690565b60085461050f906001600160a01b031681565b61053a6106ad366004614fe4565b611d71565b6104c1611ff9565b61053a6106c8366004614f88565b612087565b61053a6106db366004614b82565b6120a2565b6107226106ee366004614b82565b60196020526000908152604090208054600182015460028301546003909301549192909160ff808316926101009004169085565b6040805195865260208601949094529115159284019290925260ff9091166060830152608082015260a00161048e565b61053a610760366004614b82565b6120d3565b61053a610773366004614b82565b6121ee565b61050f610786366004614b82565b612233565b6104ee60115481565b61053a6107a236600461504a565b612293565b600f546105c090610100900460ff1681565b61053a6107c7366004614a59565b6122df565b6104ee6107da366004614a59565b612356565b61053a6123dc565b61053a6107f5366004614d52565b6123f0565b61053a610808366004614b82565b612450565b6104c16124a6565b61053a610823366004614fc9565b6124b3565b6104ee610836366004614a59565b612524565b61053a6108493660046150e7565b612570565b61048261085c366004614a59565b6001600160a01b03166000908152600e602052604090205460ff1690565b6104ee60105481565b610482610891366004614d52565b61274b565b6104ee6108a4366004614b82565b601a6020526000908152604090205481565b6104826108c4366004614d52565b6127a7565b6007546001600160a01b031661050f565b610482612806565b6104c1612ba6565b6018546104829062010000900460ff1681565b61053a61090b366004615181565b612bb5565b6105c061091e366004614d52565b601c60209081526000928352604080842090915290825290205460ff1681565b61053a61094c3660046151e4565b612c57565b61053a61095f366004615238565b612fd1565b61053a610972366004614a59565b612fe0565b600f546105c09060ff1681565b61053a610992366004615271565b61307f565b6104ee60145481565b61053a6109ae3660046152c9565b613312565b61053a6109c1366004614b82565b613344565b61053a6109d4366004614fc9565b61339a565b6104c16109e7366004614b82565b6135e6565b61053a6109fa366004614a59565b6135f1565b60095461050f906001600160a01b031681565b6104ee60125481565b6104ee613694565b61053a610a3136600461504a565b6136c1565b61053a610a44366004614a59565b613704565b61053a610a57366004614b82565b6137a7565b6018546104829060ff1681565b600f5461050f906201000090046001600160a01b031681565b6104c16137d7565b610482610a98366004615348565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61053a610ad4366004614a59565b6137e4565b61053a610ae7366004614a59565b61385b565b61053a610afa36600461504a565b6138d1565b6000610b0a8261391b565b92915050565b60408051607a808252610f608201909252606091829182916000919060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f40803683370190505090506000805b60798160ff1611610cf6576001600160a01b0389166000908152601c6020908152604080832060ff80861685529252909120541615610ce45780858360ff1681518110610bdc57610bdc615376565b60ff9283166020918202929092018101919091526001600160a01b038b166000908152601c82526040808220858516835290925220548551908216918691908516908110610c2c57610c2c615376565b60ff9283166020918202929092010152600954604051632edb5fcf60e01b81526001600160a01b038c811660048301529284166024820152911690632edb5fcf90604401602060405180830381865afa158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb1919061538c565b838360ff1681518110610cc657610cc6615376565b9115156020928302919091019091015281610ce0816153bf565b9250505b80610cee816153bf565b915050610b8d565b5060008160ff166001600160401b03811115610d1457610d14614bc7565b604051908082528060200260200182016040528015610d3d578160200160208202803683370190505b50905060008260ff166001600160401b03811115610d5d57610d5d614bc7565b604051908082528060200260200182016040528015610d86578160200160208202803683370190505b50905060008360ff166001600160401b03811115610da657610da6614bc7565b604051908082528060200260200182016040528015610dcf578160200160208202803683370190505b50905060005b8460ff16811015610eae57878181518110610df257610df2615376565b6020026020010151848281518110610e0c57610e0c615376565b602002602001019060ff16908160ff1681525050868181518110610e3257610e32615376565b6020026020010151838281518110610e4c57610e4c615376565b602002602001019060ff16908160ff1681525050858181518110610e7257610e72615376565b6020026020010151828281518110610e8c57610e8c615376565b9115156020928302919091019091015280610ea6816153de565b915050610dd5565b50919a90995090975095505050505050565b606060008054610ecf906153f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610efb906153f7565b8015610f485780601f10610f1d57610100808354040283529160200191610f48565b820191906000526020600020905b815481529060010190602001808311610f2b57829003601f168201915b5050505050905090565b6000610f5d82613940565b506000908152600460205260409020546001600160a01b031690565b6000610f8482612233565b9050806001600160a01b0316836001600160a01b031603610ff65760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061101257506110128133610a98565b6110845760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610fed565b61108e838361399f565b505050565b336000908152600b602052604090205460ff166110c357604051634289c49360e01b815260040160405180910390fd5b604051630982088f60e41b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063982088f0906044015b60006040518083038186803b15801561111e57600080fd5b505af4158015611132573d6000803e3d6000fd5b5050505050565b336000908152600b602052604090205460ff1661116957604051634289c49360e01b815260040160405180910390fd5b806001600160a01b0381166111915760405163e6c4247b60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0384169081179091556040517f538b3425a321783393ad250db10356b8b3523ef29a40de015c5218213de0ead090600090a25050565b6040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b9061121e903390899089908990899060040161542b565b602060405180830381865af415801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f91906154b2565b90505b949350505050565b6009546001600160a01b0316331461129557604051638eea824160e01b815260040160405180910390fd5b6001600160a01b0382166000908152601c6020908152604080832060ff8086168552925282208054909116916112ca836153bf565b91906101000a81548160ff021916908360ff160217905550505050565b6000826001600160a01b0381166113115760405163e6c4247b60e01b815260040160405180910390fd5b50506001600160a01b03919091166000908152601c6020908152604080832060ff94851684529091529020541690565b336000908152600b602052604090205460ff1661137157604051634289c49360e01b815260040160405180910390fd5b604051632dd92c6960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a490604401611106565b60ff851615806113d05750600f5460ff908116908616115b156113ee57604051630b154b3b60e41b815260040160405180910390fd5b60005b8560ff1681101561146f5761145d3386838151811061141257611412615376565b602002602001015186848151811061142c5761142c615376565b602002602001015186868681811061144657611446615376565b905060200281019061145891906154cf565b613a0d565b80611467816153de565b9150506113f1565b505050505050565b336000908152601c602090815260408083206079845290915281205460ff1690036114b55760405163210f01d160e21b815260040160405180910390fd5b336000908152601b60205260408120546114d0908390615515565b90506000603c821061158857600f546040516370a0823160e01b81523060048201526000916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa15801561152b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154f9190615528565b90506014548110806115645750601454601254105b156115825760405163356680b760e01b815260040160405180910390fd5b60019150505b600954604051630cdb311760e01b815233600482015260009182916001600160a01b0390911690630cdb311790602401602060405180830381865afa1580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f99190615528565b1190508360005b8181101561182057336000908152601c602052604081209088888481811061162a5761162a615376565b905060200201602081019061163f9190614fc9565b60ff9081168252602082019290925260400160009081205490911690036116795760405163210f01d160e21b815260040160405180910390fd5b821561179c576009546001600160a01b0316632edb5fcf338989858181106116a3576116a3615376565b90506020020160208101906116b89190614fc9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604401602060405180830381865afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611728919061538c565b1561179c57336000908152601c6020526040812060029189898581811061175157611751615376565b90506020020160208101906117669190614fc9565b60ff908116825260208201929092526040016000205416101561179c5760405163483e9b8d60e11b815260040160405180910390fd5b336000908152601c60205260408120908888848181106117be576117be615376565b90506020020160208101906117d39190614fc9565b60ff908116825260208201929092526040016000908120805490921691906117fa83615541565b91906101000a81548160ff021916908360ff160217905550508080600101915050611600565b50336000908152601b602052604081208054839290611840908490615515565b9091555050604051611855908790879061555e565b6040519081900381209033907fdbcda3b6d52a6f69c85189ca3f35e5be8a2e3d052fea47f656ff00384b0c47b190600090a3821561146f57336000908152601c60209081526040808320607984529091528120805460ff16916118b783615541565b91906101000a81548160ff021916908360ff1602179055505061196833601680546118e1906153f7565b80601f016020809104026020016040519081016040528092919081815260200182805461190d906153f7565b801561195a5780601f1061192f5761010080835404028352916020019161195a565b820191906000526020600020905b81548152906001019060200180831161193d57829003601f168201915b505050505060796002613e24565b6014546012600082825461197c9190615598565b9091555050600f5460145460405163a9059cbb60e01b81523360048201526024810191909152620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156119db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ff919061538c565b50600a5460405163fa8213d360e01b81523360048201526001600160a01b039091169063fa8213d390602401600060405180830381600087803b158015611a4557600080fd5b505af1158015611a59573d6000803e3d6000fd5b5050604051600292503391507f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa90600090a3505050505050565b611a9e335b82613e87565b611aba5760405162461bcd60e51b8152600401610fed906155ab565b61108e838383613f05565b336000908152600b602052604090205460ff16611af557604051634289c49360e01b815260040160405180910390fd5b600f805460ff191660ff92909216919091179055565b611b183385858585613a0d565b50505050565b816001600160a01b038116611b465760405163e6c4247b60e01b815260040160405180910390fd5b336000908152601c6020908152604080832060ff80871685529252822054169003611b845760405163210f01d160e21b815260040160405180910390fd5b336001600160a01b03841603611bad57604051632f35253160e01b815260040160405180910390fd5b60185462010000900460ff1615611c8457600954604051632edb5fcf60e01b815233600482015260ff841660248201526000916001600160a01b031690632edb5fcf90604401602060405180830381865afa158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c34919061538c565b336000908152601c6020908152604080832060ff80891685529252909120549192506001911611811580611c655750805b611c815760405162461bcd60e51b8152600401610fed906155f8565b50505b336000908152601c6020908152604080832060ff808716855292528220805490911691611cb083615541565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0385166000908152601c602090815260408083208785168452909152812080549092169250611cff836153bf565b91906101000a81548160ff021916908360ff16021790555050826001600160a01b0316336001600160a01b03167f1b6e5f928a38f442936bbdf4696f128a543b8e43730594344a66c028d0b9c3da84604051611d64919060ff91909116815260200190565b60405180910390a3505050565b336000908152600b602052604090205460ff16611da157604051634289c49360e01b815260040160405180910390fd5b6008546040516380f2540b60e01b8152600481018490526001600160a01b038581166024830152909116906380f2540b90604401600060405180830381600087803b158015611def57600080fd5b505af1158015611e03573d6000803e3d6000fd5b505050506006601154611e16919061562f565b601154611e239190615598565b60126000828254611e349190615515565b90915550600090505b8151811015611b1857818181518110611e5857611e58615376565b602002602001015160ff16607814611ea357611389601a6000848481518110611e8357611e83615376565b602002602001015160ff1681526020019081526020016000205410611ed4565b6078600052601a6020527f0382f0ce335a2f6d9ff5c37189f20a85f5e9319580268a4587d7c49525cd970d54610bb9115b611f205760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063617264496e76656e746f727920706f736974696f6e00006044820152606401610fed565b601a6000838381518110611f3657611f36615376565b602002602001015160ff1681526020019081526020016000206000815480929190611f60906153de565b90915550506001600160a01b0384166000908152601c602052604081208351909190849084908110611f9457611f94615376565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff1680929190611fcd906153bf565b91906101000a81548160ff021916908360ff160217905550508080611ff1906153de565b915050611e3d565b60168054612006906153f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612032906153f7565b801561207f5780601f106120545761010080835404028352916020019161207f565b820191906000526020600020905b81548152906001019060200180831161206257829003601f168201915b505050505081565b61108e83838360405180602001604052806000815250613312565b6120ab33611a98565b6120c75760405162461bcd60e51b8152600401610fed906155ab565b6120d081614069565b50565b336000908152600b602052604090205460ff1661210357604051634289c49360e01b815260040160405180910390fd5b8061210d30612356565b101561212c5760405163356680b760e01b815260040160405180910390fd5b806012600082825461213e9190615598565b9091555050600f5460405163a9059cbb60e01b815233600482015260248101839052620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd919061538c565b50604051819033907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f2090600090a350565b6008546001600160a01b03163314612219576040516307473cc760e41b815260040160405180910390fd5b806012600082825461222b9190615515565b909155505050565b6000818152600260205260408120546001600160a01b031680610b0a5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fed565b336000908152600b602052604090205460ff166122c357604051634289c49360e01b815260040160405180910390fd5b60188054911515620100000262ff000019909216919091179055565b336000908152600b602052604090205460ff1661230f57604051634289c49360e01b815260040160405180910390fd5b604051632d35e2b960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401611106565b60006001600160a01b0382166123c05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610fed565b506001600160a01b031660009081526003602052604090205490565b6123e4614072565b6123ee60006140cc565b565b6009546001600160a01b0316331461241b57604051638eea824160e01b815260040160405180910390fd5b6001600160a01b0382166000908152601c6020908152604080832060ff8086168552925282208054909116916112ca83615541565b336000908152600b602052604090205460ff1661248057604051634289c49360e01b815260040160405180910390fd5b806000036124a157604051634b1c6ca160e01b815260040160405180910390fd5b601355565b60158054612006906153f7565b336000908152600b602052604090205460ff166124e357604051634289c49360e01b815260040160405180910390fd5b60648160ff16111561250857604051634b1c6ca160e01b815260040160405180910390fd5b600f805460ff9092166101000261ff0019909216919091179055565b6000816001600160a01b03811661254e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152601b602052604090205491505b50919050565b612578614072565b336000908152600b60205260409020805460ff19166001179055600f80546001600160a01b03888116620100000262010000600160b01b031990921691909117909155600880548783166001600160a01b031991821617909155600a8054868416908316179055600980549287169290911691909117905560176125fc8382615697565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526203132360ec1b8183015283518085018552600681526523173539b7b760d11b8184015293516126599460179493909101615756565b604051602081830303815290604052601590816126769190615697565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526231323160e81b8183015283518085018552600681526523173539b7b760d11b8184015293516126d39460179493909101615756565b604051602081830303815290604052601690816126f09190615697565b506001600160a01b0381166000908152600e60205260408120805460ff191660011790555b607a811015612742576000818152601a60205260409020600190558061273a816153de565b915050612715565b50505050505050565b6000826001600160a01b0381166127755760405163e6c4247b60e01b815260040160405180910390fd5b50506001600160a01b03919091166000908152601c6020908152604080832060ff948516845290915290205416151590565b6009546000906001600160a01b031633146127d557604051638eea824160e01b815260040160405180910390fd5b506001600160a01b03919091166000908152601c6020908152604080832060ff948516845290915290205416151590565b336000908152601c602090815260408083206078845290915281205460ff1681036128445760405163210f01d160e21b815260040160405180910390fd5b601354601254101561286957604051634b1c6ca160e01b815260040160405180910390fd5b600f546040516370a0823160e01b81523060048201526000916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa1580156128b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128dc9190615528565b90506013548110156129015760405163356680b760e01b815260040160405180910390fd5b6000805b60788160ff161161299057336000908152601c6020908152604080832060ff8086168552925282205416900361293e5760019150612990565b336000908152601c6020908152604080832060ff80861685529252822080549091169161296a83615541565b91906101000a81548160ff021916908360ff160217905550508080600101915050612905565b5080156129af57604051623de82960e51b815260040160405180910390fd5b612a4733601580546129c0906153f7565b80601f01602080910402602001604051908101604052809291908181526020018280546129ec906153f7565b8015612a395780601f10612a0e57610100808354040283529160200191612a39565b820191906000526020600020905b815481529060010190602001808311612a1c57829003601f168201915b505050505060786002613e24565b60135460126000828254612a5b9190615598565b9091555050600f5460135460405163a9059cbb60e01b81523360048201526024810191909152620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015612aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ade919061538c565b50600954604051633f27a03f60e21b81523360048201526000916001600160a01b03169063fc9e80fc906024016020604051808303816000875af1158015612b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4e919061538c565b905080612b6e5760405163e07c7c8d60e01b815260040160405180910390fd5b60405160019033907f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa90600090a36001935050505090565b606060018054610ecf906153f7565b336000908152600b602052604090205460ff16612be557604051634289c49360e01b815260040160405180910390fd5b6015612bf18382615697565b506016612bfe8282615697565b5080604051612c0d9190615805565b604051809103902082604051612c239190615805565b604051908190038120907fabfd337ac5625b7dc2ddd3d3bd465fb1dec15322eeeed81032268b337880bec690600090a35050565b826001600160a01b038116612c7f5760405163e6c4247b60e01b815260040160405180910390fd5b336001600160a01b03851603612ca857604051632f35253160e01b815260040160405180910390fd5b60005b82811015612f7d57336000908152601c6020526040812090858584818110612cd557612cd5615376565b9050602002016020810190612cea9190614fc9565b60ff908116825260208201929092526040016000908120549091169003612d245760405163210f01d160e21b815260040160405180910390fd5b336000908152601c6020526040812090858584818110612d4657612d46615376565b9050602002016020810190612d5b9190614fc9565b60ff90811682526020820192909252604001600090812080549092169190612d8283615541565b91906101000a81548160ff021916908360ff16021790555050601c6000866001600160a01b03166001600160a01b031681526020019081526020016000206000858584818110612dd457612dd4615376565b9050602002016020810190612de99190614fc9565b60ff90811682526020820192909252604001600090812080549092169190612e10836153bf565b91906101000a81548160ff021916908360ff16021790555050601860029054906101000a900460ff1615612f6b576009546000906001600160a01b0316632edb5fcf33878786818110612e6557612e65615376565b9050602002016020810190612e7a9190614fc9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604401602060405180830381865afa158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eea919061538c565b336000908152601c602052604081209192509060019082888887818110612f1357612f13615376565b9050602002016020810190612f289190614fc9565b60ff908116825260208201929092526040016000205416119050811580612f4c5750805b612f685760405162461bcd60e51b8152600401610fed906155f8565b50505b80612f75816153de565b915050612cab565b508282604051612f8e92919061555e565b604051908190038120906001600160a01b0386169033907f368eb521419fe880268b0d75c05eaa2da7ae9ccf468be86a848f7054366d2b9b90600090a450505050565b612fdc33838361411e565b5050565b336000908152600b602052604090205460ff1661301057604051634289c49360e01b815260040160405180910390fd5b60005b60798160ff1611612fdc576001600160a01b0382166000908152601c6020908152604080832060ff808616855292528220805490911691613053836153bf565b91906101000a81548160ff021916908360ff160217905550508080613077906153bf565b915050613013565b6009546001600160a01b031633146130aa57604051638eea824160e01b815260040160405180910390fd5b836001600160a01b0381166130d25760405163e6c4247b60e01b815260040160405180910390fd5b826001600160a01b0381166130fa5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0386166000908152601c6020908152604080832060ff808a16855292529091205416158061315557506001600160a01b0384166000908152601c6020908152604080832060ff808816855292529091205416155b156131735760405163210f01d160e21b815260040160405180910390fd5b6001600160a01b0386166000908152601c6020908152604080832060ff808a168552925282208054909116916131a883615541565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0386166000908152601c602090815260408083208a851684529091528120805490921692506131f7836153bf565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0386166000908152601c60209081526040808320888516845290915281208054909216925061324683615541565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0388166000908152601c602090815260408083208885168452909152812080549092169250613295836153bf565b91906101000a81548160ff021916908360ff16021790555050836001600160a01b0316866001600160a01b03167f52819375a02768cb5083d7b729260c6db2309fcb5c9161201ada89d30d00d524878660405161330292919060ff92831681529116602082015260400190565b60405180910390a3505050505050565b61331c3383613e87565b6133385760405162461bcd60e51b8152600401610fed906155ab565b611b18848484846141e4565b336000908152600b602052604090205460ff1661337457604051634289c49360e01b815260040160405180910390fd5b8060000361339557604051634b1c6ca160e01b815260040160405180910390fd5b601455565b336000908152601c6020908152604080832060ff808616855292528220541690036133d85760405163210f01d160e21b815260040160405180910390fd5b601854610100900460ff16156134ae57600954604051632edb5fcf60e01b815233600482015260ff831660248201526000916001600160a01b031690632edb5fcf90604401602060405180830381865afa15801561343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345e919061538c565b336000908152601c6020908152604080832060ff8088168552925290912054919250600191161181158061348f5750805b6134ab5760405162461bcd60e51b8152600401610fed906155f8565b50505b336000908152601c6020908152604080832060ff8086168552925282208054909116916134da83615541565b91906101000a81548160ff021916908360ff1602179055505060006017604051806040016040528060018152602001602f60f81b8152508360ff1673__$7e24fea74dbc7efffb723a34f6ecd87681$__636900a3ae90916040518263ffffffff1660e01b815260040161354f91815260200190565b600060405180830381865af415801561356c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135949190810190615821565b60405180604001604052806005815260200164173539b7b760d91b8152506040516020016135c59493929190615756565b6040516020818303038152906040529050612fdc33828460ff166001613e24565b6060610b0a82614217565b336000908152600b602052604090205460ff1661362157604051634289c49360e01b815260040160405180910390fd5b806001600160a01b0381166136495760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384169081179091556040517f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f90600090a25050565b601254600f546000916064916136b29190610100900460ff16615897565b6136bc919061562f565b905090565b336000908152600b602052604090205460ff166136f157604051634289c49360e01b815260040160405180910390fd5b6018805460ff1916911515919091179055565b336000908152600b602052604090205460ff1661373457604051634289c49360e01b815260040160405180910390fd5b806001600160a01b03811661375c5760405163e6c4247b60e01b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384169081179091556040517f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa20290600090a25050565b6008546001600160a01b031633146137d2576040516307473cc760e41b815260040160405180910390fd5b601155565b60178054612006906153f7565b336000908152600b602052604090205460ff1661381457604051634289c49360e01b815260040160405180910390fd5b604051633b9db68960e11b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063773b6d1290604401611106565b613863614072565b6001600160a01b0381166138c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610fed565b6120d0816140cc565b336000908152600b602052604090205460ff1661390157604051634289c49360e01b815260040160405180910390fd5b601880549115156101000261ff0019909216919091179055565b60006001600160e01b03198216632483248360e11b1480610b0a5750610b0a8261431f565b6000818152600260205260409020546001600160a01b03166120d05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fed565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906139d482612233565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60085460405163d3e6a7ad60e01b8152600481018690526001600160a01b0387811692169063d3e6a7ad90602401602060405180830381865afa158015613a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7c91906154b2565b6001600160a01b031614613aa357604051637f6ecdf560e01b815260040160405180910390fd5b600f835110613ac557604051639dcca73360e01b815260040160405180910390fd5b60185460ff1615613b91576040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b90613b12903390899089908990899060040161542b565b602060405180830381865af4158015613b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5391906154b2565b6001600160a01b0381166000908152600e602052604090205490915060ff16613b8f57604051638baa579f60e01b815260040160405180910390fd5b505b6008546040516380f2540b60e01b8152600481018690526001600160a01b038781166024830152909116906380f2540b90604401600060405180830381600087803b158015613bdf57600080fd5b505af1158015613bf3573d6000803e3d6000fd5b505050506006601154613c06919061562f565b601154613c139190615598565b60126000828254613c249190615515565b90915550600090505b8351811015613dd257838181518110613c4857613c48615376565b602002602001015160ff16607803613cad576078600052601a6020527f0382f0ce335a2f6d9ff5c37189f20a85f5e9319580268a4587d7c49525cd970d54610bb81015613ca857604051630d1ecf1760e11b815260040160405180910390fd5b613cff565b611388601a6000868481518110613cc657613cc6615376565b602002602001015160ff168152602001908152602001600020541115613cff57604051630d1ecf1760e11b815260040160405180910390fd5b601a6000858381518110613d1557613d15615376565b602002602001015160ff1681526020019081526020016000206000815480929190613d3f906153de565b90915550506001600160a01b0386166000908152601c602052604081208551909190869084908110613d7357613d73615376565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff1680929190613dac906153bf565b91906101000a81548160ff021916908360ff160217905550508080600101915050613c2d565b508383604051613de291906158ae565b604051908190038120906001600160a01b038816907fbabe8f5e83e93ab103ddf917b4292a19335a5128b3530bedd896a681cdd945e390600090a45050505050565b601054600081815260196020526040902081815560018101849055600201805461ff00191661010060ff851602179055613e5e858261436f565b613e688185614389565b600160106000828254613e7b9190615515565b90915550505050505050565b600080613e9383612233565b9050806001600160a01b0316846001600160a01b03161480613eda57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806112625750836001600160a01b0316613ef384610f52565b6001600160a01b031614949350505050565b826001600160a01b0316613f1882612233565b6001600160a01b031614613f3e5760405162461bcd60e51b8152600401610fed906158e7565b6001600160a01b038216613fa05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610fed565b826001600160a01b0316613fb382612233565b6001600160a01b031614613fd95760405162461bcd60e51b8152600401610fed906158e7565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120d081614454565b6007546001600160a01b031633146123ee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fed565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361417f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610fed565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d64565b6141ef848484613f05565b6141fb84848484614494565b611b185760405162461bcd60e51b8152600401610fed9061592c565b606061422282613940565b6000828152600660205260408120805461423b906153f7565b80601f0160208091040260200160405190810160405280929190818152602001828054614267906153f7565b80156142b45780601f10614289576101008083540402835291602001916142b4565b820191906000526020600020905b81548152906001019060200180831161429757829003601f168201915b5050505050905060006142d260408051602081019091526000815290565b905080516000036142e4575092915050565b8151156143165780826040516020016142fe92919061597e565b60405160208183030381529060405292505050919050565b61126284614592565b60006001600160e01b031982166380ac58cd60e01b148061435057506001600160e01b03198216635b5e139f60e01b145b80610b0a57506301ffc9a760e01b6001600160e01b0319831614610b0a565b612fdc828260405180602001604052806000815250614606565b6000828152600260205260409020546001600160a01b03166144045760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610fed565b600082815260066020526040902061441c8282615697565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b61445d81614639565b60008181526006602052604090208054614476906153f7565b1590506120d05760008181526006602052604081206120d0916149c3565b60006001600160a01b0384163b1561458a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906144d89033908990889088906004016159ad565b6020604051808303816000875af1925050508015614513575060408051601f3d908101601f19168201909252614510918101906159ea565b60015b614570573d808015614541576040519150601f19603f3d011682016040523d82523d6000602084013e614546565b606091505b5080516000036145685760405162461bcd60e51b8152600401610fed9061592c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611262565b506001611262565b606061459d82613940565b60006145b460408051602081019091526000815290565b905060008151116145d457604051806020016040528060008152506145ff565b806145de846146ce565b6040516020016145ef92919061597e565b6040516020818303038152906040525b9392505050565b6146108383614760565b61461d6000848484614494565b61108e5760405162461bcd60e51b8152600401610fed9061592c565b600061464482612233565b905061464f82612233565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606060006146db836148eb565b60010190506000816001600160401b038111156146fa576146fa614bc7565b6040519080825280601f01601f191660200182016040528015614724576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461472e57509392505050565b6001600160a01b0382166147b65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610fed565b6000818152600260205260409020546001600160a01b03161561481b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fed565b6000818152600260205260409020546001600160a01b0316156148805760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fed565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061492a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614956576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061497457662386f26fc10000830492506010015b6305f5e100831061498c576305f5e100830492506008015b61271083106149a057612710830492506004015b606483106149b2576064830492506002015b600a8310610b0a5760010192915050565b5080546149cf906153f7565b6000825580601f106149df575050565b601f0160209004906000526020600020908101906120d091905b80821115614a0d57600081556001016149f9565b5090565b6001600160e01b0319811681146120d057600080fd5b600060208284031215614a3957600080fd5b81356145ff81614a11565b6001600160a01b03811681146120d057600080fd5b600060208284031215614a6b57600080fd5b81356145ff81614a44565b600081518084526020808501945080840160005b83811015614aa957815160ff1687529582019590820190600101614a8a565b509495945050505050565b606081526000614ac76060830186614a76565b602083820381850152614ada8287614a76565b8481036040860152855180825282870193509082019060005b81811015614b11578451151583529383019391830191600101614af3565b509098975050505050505050565b60005b83811015614b3a578181015183820152602001614b22565b50506000910152565b60008151808452614b5b816020860160208601614b1f565b601f01601f19169290920160200192915050565b6020815260006145ff6020830184614b43565b600060208284031215614b9457600080fd5b5035919050565b60008060408385031215614bae57600080fd5b8235614bb981614a44565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614c0557614c05614bc7565b604052919050565b60006001600160401b03821115614c2657614c26614bc7565b5060051b60200190565b803560ff81168114614c4157600080fd5b919050565b600082601f830112614c5757600080fd5b81356020614c6c614c6783614c0d565b614bdd565b82815260059290921b84018101918181019086841115614c8b57600080fd5b8286015b84811015614cad57614ca081614c30565b8352918301918301614c8f565b509695505050505050565b60008060008060608587031215614cce57600080fd5b8435935060208501356001600160401b0380821115614cec57600080fd5b614cf888838901614c46565b94506040870135915080821115614d0e57600080fd5b818701915087601f830112614d2257600080fd5b813581811115614d3157600080fd5b886020828501011115614d4357600080fd5b95989497505060200194505050565b60008060408385031215614d6557600080fd5b8235614d7081614a44565b9150614d7e60208401614c30565b90509250929050565b600082601f830112614d9857600080fd5b81356020614da8614c6783614c0d565b82815260059290921b84018101918181019086841115614dc757600080fd5b8286015b84811015614cad5780356001600160401b03811115614dea5760008081fd5b614df88986838b0101614c46565b845250918301918301614dcb565b60008083601f840112614e1857600080fd5b5081356001600160401b03811115614e2f57600080fd5b6020830191508360208260051b8501011115614e4a57600080fd5b9250929050565b600080600080600060808688031215614e6957600080fd5b614e7286614c30565b94506020808701356001600160401b0380821115614e8f57600080fd5b818901915089601f830112614ea357600080fd5b8135614eb1614c6782614c0d565b81815260059190911b8301840190848101908c831115614ed057600080fd5b938501935b82851015614eee57843582529385019390850190614ed5565b985050506040890135925080831115614f0657600080fd5b614f128a848b01614d87565b95506060890135925080831115614f2857600080fd5b5050614f3688828901614e06565b969995985093965092949392505050565b60008060208385031215614f5a57600080fd5b82356001600160401b03811115614f7057600080fd5b614f7c85828601614e06565b90969095509350505050565b600080600060608486031215614f9d57600080fd5b8335614fa881614a44565b92506020840135614fb881614a44565b929592945050506040919091013590565b600060208284031215614fdb57600080fd5b6145ff82614c30565b600080600060608486031215614ff957600080fd5b833561500481614a44565b92506020840135915060408401356001600160401b0381111561502657600080fd5b61503286828701614c46565b9150509250925092565b80151581146120d057600080fd5b60006020828403121561505c57600080fd5b81356145ff8161503c565b60006001600160401b0382111561508057615080614bc7565b50601f01601f191660200190565b600061509c614c6784615067565b90508281528383830111156150b057600080fd5b828260208301376000602084830101529392505050565b600082601f8301126150d857600080fd5b6145ff8383356020850161508e565b60008060008060008060c0878903121561510057600080fd5b863561510b81614a44565b9550602087013561511b81614a44565b9450604087013561512b81614a44565b9350606087013561513b81614a44565b925060808701356001600160401b0381111561515657600080fd5b61516289828a016150c7565b92505060a087013561517381614a44565b809150509295509295509295565b6000806040838503121561519457600080fd5b82356001600160401b03808211156151ab57600080fd5b6151b7868387016150c7565b935060208501359150808211156151cd57600080fd5b506151da858286016150c7565b9150509250929050565b6000806000604084860312156151f957600080fd5b833561520481614a44565b925060208401356001600160401b0381111561521f57600080fd5b61522b86828701614e06565b9497909650939450505050565b6000806040838503121561524b57600080fd5b823561525681614a44565b915060208301356152668161503c565b809150509250929050565b6000806000806080858703121561528757600080fd5b843561529281614a44565b93506152a060208601614c30565b925060408501356152b081614a44565b91506152be60608601614c30565b905092959194509250565b600080600080608085870312156152df57600080fd5b84356152ea81614a44565b935060208501356152fa81614a44565b92506040850135915060608501356001600160401b0381111561531c57600080fd5b8501601f8101871361532d57600080fd5b61533c8782356020840161508e565b91505092959194509250565b6000806040838503121561535b57600080fd5b823561536681614a44565b9150602083013561526681614a44565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561539e57600080fd5b81516145ff8161503c565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036153d5576153d56153a9565b60010192915050565b6000600182016153f0576153f06153a9565b5060010190565b600181811c9082168061540b57607f821691505b60208210810361256a57634e487b7160e01b600052602260045260246000fd5b6001600160a01b0386168152602080820186905260806040830181905285519083018190526000918681019160a0850190845b8181101561547d57845160ff168352938301939183019160010161545e565b505084810360608601528581528587838301376000818701830152601f909501601f1916909401909301979650505050505050565b6000602082840312156154c457600080fd5b81516145ff81614a44565b6000808335601e198436030181126154e657600080fd5b8301803591506001600160401b0382111561550057600080fd5b602001915036819003821315614e4a57600080fd5b80820180821115610b0a57610b0a6153a9565b60006020828403121561553a57600080fd5b5051919050565b600060ff821680615554576155546153a9565b6000190192915050565b60008184825b8581101561558d5760ff61557783614c30565b1683526020928301929190910190600101615564565b509095945050505050565b81810381811115610b0a57610b0a6153a9565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526017908201527f5468697320636172642068617320616e206f666665722e000000000000000000604082015260600190565b60008261564c57634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561108e57600081815260208120601f850160051c810160208610156156785750805b601f850160051c820191505b8181101561146f57828155600101615684565b81516001600160401b038111156156b0576156b0614bc7565b6156c4816156be84546153f7565b84615651565b602080601f8311600181146156f957600084156156e15750858301515b600019600386901b1c1916600185901b17855561146f565b600085815260208120601f198616915b8281101561572857888601518255948401946001909101908401615709565b50858210156157465787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808654615764816153f7565b6001828116801561577c5760018114615791576157c0565b60ff19841687528215158302870194506157c0565b8a60005260208060002060005b858110156157b75781548a82015290840190820161579e565b50505082870194505b5050505085516157d4818360208a01614b1f565b85519101906157e7818360208901614b1f565b84519101906157fa818360208801614b1f565b019695505050505050565b60008251615817818460208701614b1f565b9190910192915050565b60006020828403121561583357600080fd5b81516001600160401b0381111561584957600080fd5b8201601f8101841361585a57600080fd5b8051615868614c6782615067565b81815285602083850101111561587d57600080fd5b61588e826020830160208601614b1f565b95945050505050565b8082028115828204841417610b0a57610b0a6153a9565b815160009082906020808601845b838110156158db57815160ff16855293820193908201906001016158bc565b50929695505050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351615990818460208801614b1f565b8351908301906159a4818360208801614b1f565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906159e090830184614b43565b9695505050505050565b6000602082840312156159fc57600080fd5b81516145ff81614a1156fea26469706673582212200ffaf3d324c37446eb406b5236a0190fe68d2f2a5fd1a9f7402876c3b73a475464736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061046a5760003560e01c806379e8dadc1161024c578063ad1684fa11610146578063dbfc05cf116100c3578063e8a7e31d11610087578063e8a7e31d14610a82578063e985e9c514610a8a578063eb12d61e14610ac6578063f2fde38b14610ad9578063f98fd28314610aec57600080fd5b8063dbfc05cf14610a23578063ddb975e814610a36578063e1883c6e14610a49578063e4ae0b9b14610a5c578063e606df8714610a6957600080fd5b8063c87b56dd1161010a578063c87b56dd146109d9578063cafaa473146109ec578063d322b563146109ff578063d7093f4014610a12578063d780c47714610a1b57600080fd5b8063ad1684fa14610984578063b352618514610997578063b88d4fde146109a0578063ba6c0fbc146109b3578063bf400a6a146109c657600080fd5b80638da5cb5b116101d45780639ff26efd116101985780639ff26efd14610910578063a1af8ad41461093e578063a22cb46514610951578063a419811d14610964578063ab5351601461097757600080fd5b80638da5cb5b146108c95780639038f414146108da57806395d89b41146108e25780639a5613ad146108ea5780639c7f707f146108fd57600080fd5b80637df73e271161021b5780637df73e271461084e57806382d8a1181461087a578063886eb60f1461088357806388e0ef80146108965780638bf670c8146108b657600080fd5b806379e8dadc1461080d5780637ce65f7b146108155780637cf86b72146108285780637de99bd91461083b57600080fd5b8063267b841d116103685780635e31ce48116102e55780637065cb48116102a95780637065cb48146107b957806370a08231146107cc578063715018a6146107df5780637155a3ac146107e75780637232d7d4146107fa57600080fd5b80635e31ce48146107655780636352211e14610778578063656bd0ad1461078b57806368cc5bc1146107945780636d0af178146107a757600080fd5b80634039327e1161032c5780634039327e146106b257806342842e0e146106ba57806342966c68146106cd5780634c03cd0b146106e05780635312ea8e1461075257600080fd5b8063267b841d1461063a5780632ca699e71461064d5780632f54bf6e146106605780632f9e026a1461068c57806330f5cc581461069f57600080fd5b8063147baac7116103f6578063203335f6116103ba578063203335f6146105e557806320965a5f146105f857806321a7c6b01461060b57806323b872dd14610614578063241a08fe1461062757600080fd5b8063147baac71461057557806314cca36a14610587578063155e2f921461059a5780631585cc4e146105ad578063173825d9146105d257600080fd5b8063081812fc1161043d578063081812fc146104fc578063095ea7b3146105275780630e316ab71461053c578063128916dc1461054f5780631306952c1461056257600080fd5b806301ffc9a71461046f5780630435dcaf1461049757806306fdde03146104b957806307b2e246146104ce575b600080fd5b61048261047d366004614a27565b610aff565b60405190151581526020015b60405180910390f35b6104aa6104a5366004614a59565b610b10565b60405161048e93929190614ab4565b6104c1610ec0565b60405161048e9190614b6f565b6104ee6104dc366004614a59565b601b6020526000908152604090205481565b60405190815260200161048e565b61050f61050a366004614b82565b610f52565b6040516001600160a01b03909116815260200161048e565b61053a610535366004614b9b565b610f79565b005b61053a61054a366004614a59565b611093565b61053a61055d366004614a59565b611139565b61050f610570366004614cb8565b6111dc565b60185461048290610100900460ff1681565b600a5461050f906001600160a01b031681565b61053a6105a8366004614d52565b61126a565b6105c06105bb366004614d52565b6112e7565b60405160ff909116815260200161048e565b61053a6105e0366004614a59565b611341565b61053a6105f3366004614e51565b6113b8565b61053a610606366004614f47565b611477565b6104ee60135481565b61053a610622366004614f88565b611a93565b61053a610635366004614fc9565b611ac5565b61053a610648366004614cb8565b611b0b565b61053a61065b366004614d52565b611b1e565b61048261066e366004614a59565b6001600160a01b03166000908152600b602052604090205460ff1690565b60085461050f906001600160a01b031681565b61053a6106ad366004614fe4565b611d71565b6104c1611ff9565b61053a6106c8366004614f88565b612087565b61053a6106db366004614b82565b6120a2565b6107226106ee366004614b82565b60196020526000908152604090208054600182015460028301546003909301549192909160ff808316926101009004169085565b6040805195865260208601949094529115159284019290925260ff9091166060830152608082015260a00161048e565b61053a610760366004614b82565b6120d3565b61053a610773366004614b82565b6121ee565b61050f610786366004614b82565b612233565b6104ee60115481565b61053a6107a236600461504a565b612293565b600f546105c090610100900460ff1681565b61053a6107c7366004614a59565b6122df565b6104ee6107da366004614a59565b612356565b61053a6123dc565b61053a6107f5366004614d52565b6123f0565b61053a610808366004614b82565b612450565b6104c16124a6565b61053a610823366004614fc9565b6124b3565b6104ee610836366004614a59565b612524565b61053a6108493660046150e7565b612570565b61048261085c366004614a59565b6001600160a01b03166000908152600e602052604090205460ff1690565b6104ee60105481565b610482610891366004614d52565b61274b565b6104ee6108a4366004614b82565b601a6020526000908152604090205481565b6104826108c4366004614d52565b6127a7565b6007546001600160a01b031661050f565b610482612806565b6104c1612ba6565b6018546104829062010000900460ff1681565b61053a61090b366004615181565b612bb5565b6105c061091e366004614d52565b601c60209081526000928352604080842090915290825290205460ff1681565b61053a61094c3660046151e4565b612c57565b61053a61095f366004615238565b612fd1565b61053a610972366004614a59565b612fe0565b600f546105c09060ff1681565b61053a610992366004615271565b61307f565b6104ee60145481565b61053a6109ae3660046152c9565b613312565b61053a6109c1366004614b82565b613344565b61053a6109d4366004614fc9565b61339a565b6104c16109e7366004614b82565b6135e6565b61053a6109fa366004614a59565b6135f1565b60095461050f906001600160a01b031681565b6104ee60125481565b6104ee613694565b61053a610a3136600461504a565b6136c1565b61053a610a44366004614a59565b613704565b61053a610a57366004614b82565b6137a7565b6018546104829060ff1681565b600f5461050f906201000090046001600160a01b031681565b6104c16137d7565b610482610a98366004615348565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61053a610ad4366004614a59565b6137e4565b61053a610ae7366004614a59565b61385b565b61053a610afa36600461504a565b6138d1565b6000610b0a8261391b565b92915050565b60408051607a808252610f608201909252606091829182916000919060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f4080368337505060408051607a808252610f608201909252929350600092915060208201610f40803683370190505090506000805b60798160ff1611610cf6576001600160a01b0389166000908152601c6020908152604080832060ff80861685529252909120541615610ce45780858360ff1681518110610bdc57610bdc615376565b60ff9283166020918202929092018101919091526001600160a01b038b166000908152601c82526040808220858516835290925220548551908216918691908516908110610c2c57610c2c615376565b60ff9283166020918202929092010152600954604051632edb5fcf60e01b81526001600160a01b038c811660048301529284166024820152911690632edb5fcf90604401602060405180830381865afa158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb1919061538c565b838360ff1681518110610cc657610cc6615376565b9115156020928302919091019091015281610ce0816153bf565b9250505b80610cee816153bf565b915050610b8d565b5060008160ff166001600160401b03811115610d1457610d14614bc7565b604051908082528060200260200182016040528015610d3d578160200160208202803683370190505b50905060008260ff166001600160401b03811115610d5d57610d5d614bc7565b604051908082528060200260200182016040528015610d86578160200160208202803683370190505b50905060008360ff166001600160401b03811115610da657610da6614bc7565b604051908082528060200260200182016040528015610dcf578160200160208202803683370190505b50905060005b8460ff16811015610eae57878181518110610df257610df2615376565b6020026020010151848281518110610e0c57610e0c615376565b602002602001019060ff16908160ff1681525050868181518110610e3257610e32615376565b6020026020010151838281518110610e4c57610e4c615376565b602002602001019060ff16908160ff1681525050858181518110610e7257610e72615376565b6020026020010151828281518110610e8c57610e8c615376565b9115156020928302919091019091015280610ea6816153de565b915050610dd5565b50919a90995090975095505050505050565b606060008054610ecf906153f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610efb906153f7565b8015610f485780601f10610f1d57610100808354040283529160200191610f48565b820191906000526020600020905b815481529060010190602001808311610f2b57829003601f168201915b5050505050905090565b6000610f5d82613940565b506000908152600460205260409020546001600160a01b031690565b6000610f8482612233565b9050806001600160a01b0316836001600160a01b031603610ff65760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061101257506110128133610a98565b6110845760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610fed565b61108e838361399f565b505050565b336000908152600b602052604090205460ff166110c357604051634289c49360e01b815260040160405180910390fd5b604051630982088f60e41b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063982088f0906044015b60006040518083038186803b15801561111e57600080fd5b505af4158015611132573d6000803e3d6000fd5b5050505050565b336000908152600b602052604090205460ff1661116957604051634289c49360e01b815260040160405180910390fd5b806001600160a01b0381166111915760405163e6c4247b60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0384169081179091556040517f538b3425a321783393ad250db10356b8b3523ef29a40de015c5218213de0ead090600090a25050565b6040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b9061121e903390899089908990899060040161542b565b602060405180830381865af415801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f91906154b2565b90505b949350505050565b6009546001600160a01b0316331461129557604051638eea824160e01b815260040160405180910390fd5b6001600160a01b0382166000908152601c6020908152604080832060ff8086168552925282208054909116916112ca836153bf565b91906101000a81548160ff021916908360ff160217905550505050565b6000826001600160a01b0381166113115760405163e6c4247b60e01b815260040160405180910390fd5b50506001600160a01b03919091166000908152601c6020908152604080832060ff94851684529091529020541690565b336000908152600b602052604090205460ff1661137157604051634289c49360e01b815260040160405180910390fd5b604051632dd92c6960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a490604401611106565b60ff851615806113d05750600f5460ff908116908616115b156113ee57604051630b154b3b60e41b815260040160405180910390fd5b60005b8560ff1681101561146f5761145d3386838151811061141257611412615376565b602002602001015186848151811061142c5761142c615376565b602002602001015186868681811061144657611446615376565b905060200281019061145891906154cf565b613a0d565b80611467816153de565b9150506113f1565b505050505050565b336000908152601c602090815260408083206079845290915281205460ff1690036114b55760405163210f01d160e21b815260040160405180910390fd5b336000908152601b60205260408120546114d0908390615515565b90506000603c821061158857600f546040516370a0823160e01b81523060048201526000916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa15801561152b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154f9190615528565b90506014548110806115645750601454601254105b156115825760405163356680b760e01b815260040160405180910390fd5b60019150505b600954604051630cdb311760e01b815233600482015260009182916001600160a01b0390911690630cdb311790602401602060405180830381865afa1580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f99190615528565b1190508360005b8181101561182057336000908152601c602052604081209088888481811061162a5761162a615376565b905060200201602081019061163f9190614fc9565b60ff9081168252602082019290925260400160009081205490911690036116795760405163210f01d160e21b815260040160405180910390fd5b821561179c576009546001600160a01b0316632edb5fcf338989858181106116a3576116a3615376565b90506020020160208101906116b89190614fc9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604401602060405180830381865afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611728919061538c565b1561179c57336000908152601c6020526040812060029189898581811061175157611751615376565b90506020020160208101906117669190614fc9565b60ff908116825260208201929092526040016000205416101561179c5760405163483e9b8d60e11b815260040160405180910390fd5b336000908152601c60205260408120908888848181106117be576117be615376565b90506020020160208101906117d39190614fc9565b60ff908116825260208201929092526040016000908120805490921691906117fa83615541565b91906101000a81548160ff021916908360ff160217905550508080600101915050611600565b50336000908152601b602052604081208054839290611840908490615515565b9091555050604051611855908790879061555e565b6040519081900381209033907fdbcda3b6d52a6f69c85189ca3f35e5be8a2e3d052fea47f656ff00384b0c47b190600090a3821561146f57336000908152601c60209081526040808320607984529091528120805460ff16916118b783615541565b91906101000a81548160ff021916908360ff1602179055505061196833601680546118e1906153f7565b80601f016020809104026020016040519081016040528092919081815260200182805461190d906153f7565b801561195a5780601f1061192f5761010080835404028352916020019161195a565b820191906000526020600020905b81548152906001019060200180831161193d57829003601f168201915b505050505060796002613e24565b6014546012600082825461197c9190615598565b9091555050600f5460145460405163a9059cbb60e01b81523360048201526024810191909152620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156119db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ff919061538c565b50600a5460405163fa8213d360e01b81523360048201526001600160a01b039091169063fa8213d390602401600060405180830381600087803b158015611a4557600080fd5b505af1158015611a59573d6000803e3d6000fd5b5050604051600292503391507f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa90600090a3505050505050565b611a9e335b82613e87565b611aba5760405162461bcd60e51b8152600401610fed906155ab565b61108e838383613f05565b336000908152600b602052604090205460ff16611af557604051634289c49360e01b815260040160405180910390fd5b600f805460ff191660ff92909216919091179055565b611b183385858585613a0d565b50505050565b816001600160a01b038116611b465760405163e6c4247b60e01b815260040160405180910390fd5b336000908152601c6020908152604080832060ff80871685529252822054169003611b845760405163210f01d160e21b815260040160405180910390fd5b336001600160a01b03841603611bad57604051632f35253160e01b815260040160405180910390fd5b60185462010000900460ff1615611c8457600954604051632edb5fcf60e01b815233600482015260ff841660248201526000916001600160a01b031690632edb5fcf90604401602060405180830381865afa158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c34919061538c565b336000908152601c6020908152604080832060ff80891685529252909120549192506001911611811580611c655750805b611c815760405162461bcd60e51b8152600401610fed906155f8565b50505b336000908152601c6020908152604080832060ff808716855292528220805490911691611cb083615541565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0385166000908152601c602090815260408083208785168452909152812080549092169250611cff836153bf565b91906101000a81548160ff021916908360ff16021790555050826001600160a01b0316336001600160a01b03167f1b6e5f928a38f442936bbdf4696f128a543b8e43730594344a66c028d0b9c3da84604051611d64919060ff91909116815260200190565b60405180910390a3505050565b336000908152600b602052604090205460ff16611da157604051634289c49360e01b815260040160405180910390fd5b6008546040516380f2540b60e01b8152600481018490526001600160a01b038581166024830152909116906380f2540b90604401600060405180830381600087803b158015611def57600080fd5b505af1158015611e03573d6000803e3d6000fd5b505050506006601154611e16919061562f565b601154611e239190615598565b60126000828254611e349190615515565b90915550600090505b8151811015611b1857818181518110611e5857611e58615376565b602002602001015160ff16607814611ea357611389601a6000848481518110611e8357611e83615376565b602002602001015160ff1681526020019081526020016000205410611ed4565b6078600052601a6020527f0382f0ce335a2f6d9ff5c37189f20a85f5e9319580268a4587d7c49525cd970d54610bb9115b611f205760405162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063617264496e76656e746f727920706f736974696f6e00006044820152606401610fed565b601a6000838381518110611f3657611f36615376565b602002602001015160ff1681526020019081526020016000206000815480929190611f60906153de565b90915550506001600160a01b0384166000908152601c602052604081208351909190849084908110611f9457611f94615376565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff1680929190611fcd906153bf565b91906101000a81548160ff021916908360ff160217905550508080611ff1906153de565b915050611e3d565b60168054612006906153f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612032906153f7565b801561207f5780601f106120545761010080835404028352916020019161207f565b820191906000526020600020905b81548152906001019060200180831161206257829003601f168201915b505050505081565b61108e83838360405180602001604052806000815250613312565b6120ab33611a98565b6120c75760405162461bcd60e51b8152600401610fed906155ab565b6120d081614069565b50565b336000908152600b602052604090205460ff1661210357604051634289c49360e01b815260040160405180910390fd5b8061210d30612356565b101561212c5760405163356680b760e01b815260040160405180910390fd5b806012600082825461213e9190615598565b9091555050600f5460405163a9059cbb60e01b815233600482015260248101839052620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd919061538c565b50604051819033907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f2090600090a350565b6008546001600160a01b03163314612219576040516307473cc760e41b815260040160405180910390fd5b806012600082825461222b9190615515565b909155505050565b6000818152600260205260408120546001600160a01b031680610b0a5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fed565b336000908152600b602052604090205460ff166122c357604051634289c49360e01b815260040160405180910390fd5b60188054911515620100000262ff000019909216919091179055565b336000908152600b602052604090205460ff1661230f57604051634289c49360e01b815260040160405180910390fd5b604051632d35e2b960e21b8152600b60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae490604401611106565b60006001600160a01b0382166123c05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610fed565b506001600160a01b031660009081526003602052604090205490565b6123e4614072565b6123ee60006140cc565b565b6009546001600160a01b0316331461241b57604051638eea824160e01b815260040160405180910390fd5b6001600160a01b0382166000908152601c6020908152604080832060ff8086168552925282208054909116916112ca83615541565b336000908152600b602052604090205460ff1661248057604051634289c49360e01b815260040160405180910390fd5b806000036124a157604051634b1c6ca160e01b815260040160405180910390fd5b601355565b60158054612006906153f7565b336000908152600b602052604090205460ff166124e357604051634289c49360e01b815260040160405180910390fd5b60648160ff16111561250857604051634b1c6ca160e01b815260040160405180910390fd5b600f805460ff9092166101000261ff0019909216919091179055565b6000816001600160a01b03811661254e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152601b602052604090205491505b50919050565b612578614072565b336000908152600b60205260409020805460ff19166001179055600f80546001600160a01b03888116620100000262010000600160b01b031990921691909117909155600880548783166001600160a01b031991821617909155600a8054868416908316179055600980549287169290911691909117905560176125fc8382615697565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526203132360ec1b8183015283518085018552600681526523173539b7b760d11b8184015293516126599460179493909101615756565b604051602081830303815290604052601590816126769190615697565b5060408051808201825260018152602f60f81b60208083019190915282518084018452600381526231323160e81b8183015283518085018552600681526523173539b7b760d11b8184015293516126d39460179493909101615756565b604051602081830303815290604052601690816126f09190615697565b506001600160a01b0381166000908152600e60205260408120805460ff191660011790555b607a811015612742576000818152601a60205260409020600190558061273a816153de565b915050612715565b50505050505050565b6000826001600160a01b0381166127755760405163e6c4247b60e01b815260040160405180910390fd5b50506001600160a01b03919091166000908152601c6020908152604080832060ff948516845290915290205416151590565b6009546000906001600160a01b031633146127d557604051638eea824160e01b815260040160405180910390fd5b506001600160a01b03919091166000908152601c6020908152604080832060ff948516845290915290205416151590565b336000908152601c602090815260408083206078845290915281205460ff1681036128445760405163210f01d160e21b815260040160405180910390fd5b601354601254101561286957604051634b1c6ca160e01b815260040160405180910390fd5b600f546040516370a0823160e01b81523060048201526000916201000090046001600160a01b0316906370a0823190602401602060405180830381865afa1580156128b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128dc9190615528565b90506013548110156129015760405163356680b760e01b815260040160405180910390fd5b6000805b60788160ff161161299057336000908152601c6020908152604080832060ff8086168552925282205416900361293e5760019150612990565b336000908152601c6020908152604080832060ff80861685529252822080549091169161296a83615541565b91906101000a81548160ff021916908360ff160217905550508080600101915050612905565b5080156129af57604051623de82960e51b815260040160405180910390fd5b612a4733601580546129c0906153f7565b80601f01602080910402602001604051908101604052809291908181526020018280546129ec906153f7565b8015612a395780601f10612a0e57610100808354040283529160200191612a39565b820191906000526020600020905b815481529060010190602001808311612a1c57829003601f168201915b505050505060786002613e24565b60135460126000828254612a5b9190615598565b9091555050600f5460135460405163a9059cbb60e01b81523360048201526024810191909152620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015612aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ade919061538c565b50600954604051633f27a03f60e21b81523360048201526000916001600160a01b03169063fc9e80fc906024016020604051808303816000875af1158015612b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4e919061538c565b905080612b6e5760405163e07c7c8d60e01b815260040160405180910390fd5b60405160019033907f6d0344e2059f835240cb954cce07d4b26f0d0844eecc234f7ee0e292ba80a1aa90600090a36001935050505090565b606060018054610ecf906153f7565b336000908152600b602052604090205460ff16612be557604051634289c49360e01b815260040160405180910390fd5b6015612bf18382615697565b506016612bfe8282615697565b5080604051612c0d9190615805565b604051809103902082604051612c239190615805565b604051908190038120907fabfd337ac5625b7dc2ddd3d3bd465fb1dec15322eeeed81032268b337880bec690600090a35050565b826001600160a01b038116612c7f5760405163e6c4247b60e01b815260040160405180910390fd5b336001600160a01b03851603612ca857604051632f35253160e01b815260040160405180910390fd5b60005b82811015612f7d57336000908152601c6020526040812090858584818110612cd557612cd5615376565b9050602002016020810190612cea9190614fc9565b60ff908116825260208201929092526040016000908120549091169003612d245760405163210f01d160e21b815260040160405180910390fd5b336000908152601c6020526040812090858584818110612d4657612d46615376565b9050602002016020810190612d5b9190614fc9565b60ff90811682526020820192909252604001600090812080549092169190612d8283615541565b91906101000a81548160ff021916908360ff16021790555050601c6000866001600160a01b03166001600160a01b031681526020019081526020016000206000858584818110612dd457612dd4615376565b9050602002016020810190612de99190614fc9565b60ff90811682526020820192909252604001600090812080549092169190612e10836153bf565b91906101000a81548160ff021916908360ff16021790555050601860029054906101000a900460ff1615612f6b576009546000906001600160a01b0316632edb5fcf33878786818110612e6557612e65615376565b9050602002016020810190612e7a9190614fc9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604401602060405180830381865afa158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eea919061538c565b336000908152601c602052604081209192509060019082888887818110612f1357612f13615376565b9050602002016020810190612f289190614fc9565b60ff908116825260208201929092526040016000205416119050811580612f4c5750805b612f685760405162461bcd60e51b8152600401610fed906155f8565b50505b80612f75816153de565b915050612cab565b508282604051612f8e92919061555e565b604051908190038120906001600160a01b0386169033907f368eb521419fe880268b0d75c05eaa2da7ae9ccf468be86a848f7054366d2b9b90600090a450505050565b612fdc33838361411e565b5050565b336000908152600b602052604090205460ff1661301057604051634289c49360e01b815260040160405180910390fd5b60005b60798160ff1611612fdc576001600160a01b0382166000908152601c6020908152604080832060ff808616855292528220805490911691613053836153bf565b91906101000a81548160ff021916908360ff160217905550508080613077906153bf565b915050613013565b6009546001600160a01b031633146130aa57604051638eea824160e01b815260040160405180910390fd5b836001600160a01b0381166130d25760405163e6c4247b60e01b815260040160405180910390fd5b826001600160a01b0381166130fa5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0386166000908152601c6020908152604080832060ff808a16855292529091205416158061315557506001600160a01b0384166000908152601c6020908152604080832060ff808816855292529091205416155b156131735760405163210f01d160e21b815260040160405180910390fd5b6001600160a01b0386166000908152601c6020908152604080832060ff808a168552925282208054909116916131a883615541565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0386166000908152601c602090815260408083208a851684529091528120805490921692506131f7836153bf565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0386166000908152601c60209081526040808320888516845290915281208054909216925061324683615541565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0388166000908152601c602090815260408083208885168452909152812080549092169250613295836153bf565b91906101000a81548160ff021916908360ff16021790555050836001600160a01b0316866001600160a01b03167f52819375a02768cb5083d7b729260c6db2309fcb5c9161201ada89d30d00d524878660405161330292919060ff92831681529116602082015260400190565b60405180910390a3505050505050565b61331c3383613e87565b6133385760405162461bcd60e51b8152600401610fed906155ab565b611b18848484846141e4565b336000908152600b602052604090205460ff1661337457604051634289c49360e01b815260040160405180910390fd5b8060000361339557604051634b1c6ca160e01b815260040160405180910390fd5b601455565b336000908152601c6020908152604080832060ff808616855292528220541690036133d85760405163210f01d160e21b815260040160405180910390fd5b601854610100900460ff16156134ae57600954604051632edb5fcf60e01b815233600482015260ff831660248201526000916001600160a01b031690632edb5fcf90604401602060405180830381865afa15801561343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345e919061538c565b336000908152601c6020908152604080832060ff8088168552925290912054919250600191161181158061348f5750805b6134ab5760405162461bcd60e51b8152600401610fed906155f8565b50505b336000908152601c6020908152604080832060ff8086168552925282208054909116916134da83615541565b91906101000a81548160ff021916908360ff1602179055505060006017604051806040016040528060018152602001602f60f81b8152508360ff1673__$7e24fea74dbc7efffb723a34f6ecd87681$__636900a3ae90916040518263ffffffff1660e01b815260040161354f91815260200190565b600060405180830381865af415801561356c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135949190810190615821565b60405180604001604052806005815260200164173539b7b760d91b8152506040516020016135c59493929190615756565b6040516020818303038152906040529050612fdc33828460ff166001613e24565b6060610b0a82614217565b336000908152600b602052604090205460ff1661362157604051634289c49360e01b815260040160405180910390fd5b806001600160a01b0381166136495760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0384169081179091556040517f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f90600090a25050565b601254600f546000916064916136b29190610100900460ff16615897565b6136bc919061562f565b905090565b336000908152600b602052604090205460ff166136f157604051634289c49360e01b815260040160405180910390fd5b6018805460ff1916911515919091179055565b336000908152600b602052604090205460ff1661373457604051634289c49360e01b815260040160405180910390fd5b806001600160a01b03811661375c5760405163e6c4247b60e01b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0384169081179091556040517f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa20290600090a25050565b6008546001600160a01b031633146137d2576040516307473cc760e41b815260040160405180910390fd5b601155565b60178054612006906153f7565b336000908152600b602052604090205460ff1661381457604051634289c49360e01b815260040160405180910390fd5b604051633b9db68960e11b8152600d60048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063773b6d1290604401611106565b613863614072565b6001600160a01b0381166138c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610fed565b6120d0816140cc565b336000908152600b602052604090205460ff1661390157604051634289c49360e01b815260040160405180910390fd5b601880549115156101000261ff0019909216919091179055565b60006001600160e01b03198216632483248360e11b1480610b0a5750610b0a8261431f565b6000818152600260205260409020546001600160a01b03166120d05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610fed565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906139d482612233565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60085460405163d3e6a7ad60e01b8152600481018690526001600160a01b0387811692169063d3e6a7ad90602401602060405180830381865afa158015613a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7c91906154b2565b6001600160a01b031614613aa357604051637f6ecdf560e01b815260040160405180910390fd5b600f835110613ac557604051639dcca73360e01b815260040160405180910390fd5b60185460ff1615613b91576040516338fb7d8b60e01b815260009073__$11abd53fa8ca7bb7b53675cf998674c516$__906338fb7d8b90613b12903390899089908990899060040161542b565b602060405180830381865af4158015613b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5391906154b2565b6001600160a01b0381166000908152600e602052604090205490915060ff16613b8f57604051638baa579f60e01b815260040160405180910390fd5b505b6008546040516380f2540b60e01b8152600481018690526001600160a01b038781166024830152909116906380f2540b90604401600060405180830381600087803b158015613bdf57600080fd5b505af1158015613bf3573d6000803e3d6000fd5b505050506006601154613c06919061562f565b601154613c139190615598565b60126000828254613c249190615515565b90915550600090505b8351811015613dd257838181518110613c4857613c48615376565b602002602001015160ff16607803613cad576078600052601a6020527f0382f0ce335a2f6d9ff5c37189f20a85f5e9319580268a4587d7c49525cd970d54610bb81015613ca857604051630d1ecf1760e11b815260040160405180910390fd5b613cff565b611388601a6000868481518110613cc657613cc6615376565b602002602001015160ff168152602001908152602001600020541115613cff57604051630d1ecf1760e11b815260040160405180910390fd5b601a6000858381518110613d1557613d15615376565b602002602001015160ff1681526020019081526020016000206000815480929190613d3f906153de565b90915550506001600160a01b0386166000908152601c602052604081208551909190869084908110613d7357613d73615376565b602002602001015160ff1660ff168152602001908152602001600020600081819054906101000a900460ff1680929190613dac906153bf565b91906101000a81548160ff021916908360ff160217905550508080600101915050613c2d565b508383604051613de291906158ae565b604051908190038120906001600160a01b038816907fbabe8f5e83e93ab103ddf917b4292a19335a5128b3530bedd896a681cdd945e390600090a45050505050565b601054600081815260196020526040902081815560018101849055600201805461ff00191661010060ff851602179055613e5e858261436f565b613e688185614389565b600160106000828254613e7b9190615515565b90915550505050505050565b600080613e9383612233565b9050806001600160a01b0316846001600160a01b03161480613eda57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806112625750836001600160a01b0316613ef384610f52565b6001600160a01b031614949350505050565b826001600160a01b0316613f1882612233565b6001600160a01b031614613f3e5760405162461bcd60e51b8152600401610fed906158e7565b6001600160a01b038216613fa05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610fed565b826001600160a01b0316613fb382612233565b6001600160a01b031614613fd95760405162461bcd60e51b8152600401610fed906158e7565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120d081614454565b6007546001600160a01b031633146123ee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fed565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361417f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610fed565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d64565b6141ef848484613f05565b6141fb84848484614494565b611b185760405162461bcd60e51b8152600401610fed9061592c565b606061422282613940565b6000828152600660205260408120805461423b906153f7565b80601f0160208091040260200160405190810160405280929190818152602001828054614267906153f7565b80156142b45780601f10614289576101008083540402835291602001916142b4565b820191906000526020600020905b81548152906001019060200180831161429757829003601f168201915b5050505050905060006142d260408051602081019091526000815290565b905080516000036142e4575092915050565b8151156143165780826040516020016142fe92919061597e565b60405160208183030381529060405292505050919050565b61126284614592565b60006001600160e01b031982166380ac58cd60e01b148061435057506001600160e01b03198216635b5e139f60e01b145b80610b0a57506301ffc9a760e01b6001600160e01b0319831614610b0a565b612fdc828260405180602001604052806000815250614606565b6000828152600260205260409020546001600160a01b03166144045760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610fed565b600082815260066020526040902061441c8282615697565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b61445d81614639565b60008181526006602052604090208054614476906153f7565b1590506120d05760008181526006602052604081206120d0916149c3565b60006001600160a01b0384163b1561458a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906144d89033908990889088906004016159ad565b6020604051808303816000875af1925050508015614513575060408051601f3d908101601f19168201909252614510918101906159ea565b60015b614570573d808015614541576040519150601f19603f3d011682016040523d82523d6000602084013e614546565b606091505b5080516000036145685760405162461bcd60e51b8152600401610fed9061592c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611262565b506001611262565b606061459d82613940565b60006145b460408051602081019091526000815290565b905060008151116145d457604051806020016040528060008152506145ff565b806145de846146ce565b6040516020016145ef92919061597e565b6040516020818303038152906040525b9392505050565b6146108383614760565b61461d6000848484614494565b61108e5760405162461bcd60e51b8152600401610fed9061592c565b600061464482612233565b905061464f82612233565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606060006146db836148eb565b60010190506000816001600160401b038111156146fa576146fa614bc7565b6040519080825280601f01601f191660200182016040528015614724576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461472e57509392505050565b6001600160a01b0382166147b65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610fed565b6000818152600260205260409020546001600160a01b03161561481b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fed565b6000818152600260205260409020546001600160a01b0316156148805760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fed565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061492a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614956576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061497457662386f26fc10000830492506010015b6305f5e100831061498c576305f5e100830492506008015b61271083106149a057612710830492506004015b606483106149b2576064830492506002015b600a8310610b0a5760010192915050565b5080546149cf906153f7565b6000825580601f106149df575050565b601f0160209004906000526020600020908101906120d091905b80821115614a0d57600081556001016149f9565b5090565b6001600160e01b0319811681146120d057600080fd5b600060208284031215614a3957600080fd5b81356145ff81614a11565b6001600160a01b03811681146120d057600080fd5b600060208284031215614a6b57600080fd5b81356145ff81614a44565b600081518084526020808501945080840160005b83811015614aa957815160ff1687529582019590820190600101614a8a565b509495945050505050565b606081526000614ac76060830186614a76565b602083820381850152614ada8287614a76565b8481036040860152855180825282870193509082019060005b81811015614b11578451151583529383019391830191600101614af3565b509098975050505050505050565b60005b83811015614b3a578181015183820152602001614b22565b50506000910152565b60008151808452614b5b816020860160208601614b1f565b601f01601f19169290920160200192915050565b6020815260006145ff6020830184614b43565b600060208284031215614b9457600080fd5b5035919050565b60008060408385031215614bae57600080fd5b8235614bb981614a44565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614c0557614c05614bc7565b604052919050565b60006001600160401b03821115614c2657614c26614bc7565b5060051b60200190565b803560ff81168114614c4157600080fd5b919050565b600082601f830112614c5757600080fd5b81356020614c6c614c6783614c0d565b614bdd565b82815260059290921b84018101918181019086841115614c8b57600080fd5b8286015b84811015614cad57614ca081614c30565b8352918301918301614c8f565b509695505050505050565b60008060008060608587031215614cce57600080fd5b8435935060208501356001600160401b0380821115614cec57600080fd5b614cf888838901614c46565b94506040870135915080821115614d0e57600080fd5b818701915087601f830112614d2257600080fd5b813581811115614d3157600080fd5b886020828501011115614d4357600080fd5b95989497505060200194505050565b60008060408385031215614d6557600080fd5b8235614d7081614a44565b9150614d7e60208401614c30565b90509250929050565b600082601f830112614d9857600080fd5b81356020614da8614c6783614c0d565b82815260059290921b84018101918181019086841115614dc757600080fd5b8286015b84811015614cad5780356001600160401b03811115614dea5760008081fd5b614df88986838b0101614c46565b845250918301918301614dcb565b60008083601f840112614e1857600080fd5b5081356001600160401b03811115614e2f57600080fd5b6020830191508360208260051b8501011115614e4a57600080fd5b9250929050565b600080600080600060808688031215614e6957600080fd5b614e7286614c30565b94506020808701356001600160401b0380821115614e8f57600080fd5b818901915089601f830112614ea357600080fd5b8135614eb1614c6782614c0d565b81815260059190911b8301840190848101908c831115614ed057600080fd5b938501935b82851015614eee57843582529385019390850190614ed5565b985050506040890135925080831115614f0657600080fd5b614f128a848b01614d87565b95506060890135925080831115614f2857600080fd5b5050614f3688828901614e06565b969995985093965092949392505050565b60008060208385031215614f5a57600080fd5b82356001600160401b03811115614f7057600080fd5b614f7c85828601614e06565b90969095509350505050565b600080600060608486031215614f9d57600080fd5b8335614fa881614a44565b92506020840135614fb881614a44565b929592945050506040919091013590565b600060208284031215614fdb57600080fd5b6145ff82614c30565b600080600060608486031215614ff957600080fd5b833561500481614a44565b92506020840135915060408401356001600160401b0381111561502657600080fd5b61503286828701614c46565b9150509250925092565b80151581146120d057600080fd5b60006020828403121561505c57600080fd5b81356145ff8161503c565b60006001600160401b0382111561508057615080614bc7565b50601f01601f191660200190565b600061509c614c6784615067565b90508281528383830111156150b057600080fd5b828260208301376000602084830101529392505050565b600082601f8301126150d857600080fd5b6145ff8383356020850161508e565b60008060008060008060c0878903121561510057600080fd5b863561510b81614a44565b9550602087013561511b81614a44565b9450604087013561512b81614a44565b9350606087013561513b81614a44565b925060808701356001600160401b0381111561515657600080fd5b61516289828a016150c7565b92505060a087013561517381614a44565b809150509295509295509295565b6000806040838503121561519457600080fd5b82356001600160401b03808211156151ab57600080fd5b6151b7868387016150c7565b935060208501359150808211156151cd57600080fd5b506151da858286016150c7565b9150509250929050565b6000806000604084860312156151f957600080fd5b833561520481614a44565b925060208401356001600160401b0381111561521f57600080fd5b61522b86828701614e06565b9497909650939450505050565b6000806040838503121561524b57600080fd5b823561525681614a44565b915060208301356152668161503c565b809150509250929050565b6000806000806080858703121561528757600080fd5b843561529281614a44565b93506152a060208601614c30565b925060408501356152b081614a44565b91506152be60608601614c30565b905092959194509250565b600080600080608085870312156152df57600080fd5b84356152ea81614a44565b935060208501356152fa81614a44565b92506040850135915060608501356001600160401b0381111561531c57600080fd5b8501601f8101871361532d57600080fd5b61533c8782356020840161508e565b91505092959194509250565b6000806040838503121561535b57600080fd5b823561536681614a44565b9150602083013561526681614a44565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561539e57600080fd5b81516145ff8161503c565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036153d5576153d56153a9565b60010192915050565b6000600182016153f0576153f06153a9565b5060010190565b600181811c9082168061540b57607f821691505b60208210810361256a57634e487b7160e01b600052602260045260246000fd5b6001600160a01b0386168152602080820186905260806040830181905285519083018190526000918681019160a0850190845b8181101561547d57845160ff168352938301939183019160010161545e565b505084810360608601528581528587838301376000818701830152601f909501601f1916909401909301979650505050505050565b6000602082840312156154c457600080fd5b81516145ff81614a44565b6000808335601e198436030181126154e657600080fd5b8301803591506001600160401b0382111561550057600080fd5b602001915036819003821315614e4a57600080fd5b80820180821115610b0a57610b0a6153a9565b60006020828403121561553a57600080fd5b5051919050565b600060ff821680615554576155546153a9565b6000190192915050565b60008184825b8581101561558d5760ff61557783614c30565b1683526020928301929190910190600101615564565b509095945050505050565b81810381811115610b0a57610b0a6153a9565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526017908201527f5468697320636172642068617320616e206f666665722e000000000000000000604082015260600190565b60008261564c57634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561108e57600081815260208120601f850160051c810160208610156156785750805b601f850160051c820191505b8181101561146f57828155600101615684565b81516001600160401b038111156156b0576156b0614bc7565b6156c4816156be84546153f7565b84615651565b602080601f8311600181146156f957600084156156e15750858301515b600019600386901b1c1916600185901b17855561146f565b600085815260208120601f198616915b8281101561572857888601518255948401946001909101908401615709565b50858210156157465787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808654615764816153f7565b6001828116801561577c5760018114615791576157c0565b60ff19841687528215158302870194506157c0565b8a60005260208060002060005b858110156157b75781548a82015290840190820161579e565b50505082870194505b5050505085516157d4818360208a01614b1f565b85519101906157e7818360208901614b1f565b84519101906157fa818360208801614b1f565b019695505050505050565b60008251615817818460208701614b1f565b9190910192915050565b60006020828403121561583357600080fd5b81516001600160401b0381111561584957600080fd5b8201601f8101841361585a57600080fd5b8051615868614c6782615067565b81815285602083850101111561587d57600080fd5b61588e826020830160208601614b1f565b95945050505050565b8082028115828204841417610b0a57610b0a6153a9565b815160009082906020808601845b838110156158db57815160ff16855293820193908201906001016158bc565b50929695505050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351615990818460208801614b1f565b8351908301906159a4818360208801614b1f565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906159e090830184614b43565b9695505050505050565b6000602082840312156159fc57600080fd5b81516145ff81614a1156fea26469706673582212200ffaf3d324c37446eb406b5236a0190fe68d2f2a5fd1a9f7402876c3b73a475464736f6c63430008140033", + "linkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 5023 + }, + { + "length": 20, + "start": 5709 + }, + { + "length": 20, + "start": 9707 + }, + { + "length": 20, + "start": 15088 + } + ] + }, + "contracts/gamma/libs/LibPackVerifier.sol": { + "LibPackVerifier": [ + { + "length": 20, + "start": 5285 + }, + { + "length": 20, + "start": 15769 + } + ] + }, + "contracts/gamma/libs/LibStringUtils.sol": { + "LibStringUtils": [ + { + "length": 20, + "start": 14286 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 4328 + }, + { + "length": 20, + "start": 5014 + }, + { + "length": 20, + "start": 9012 + }, + { + "length": 20, + "start": 14393 + } + ] + }, + "contracts/gamma/libs/LibPackVerifier.sol": { + "LibPackVerifier": [ + { + "length": 20, + "start": 4590 + }, + { + "length": 20, + "start": 15074 + } + ] + }, + "contracts/gamma/libs/LibStringUtils.sol": { + "LibStringUtils": [ + { + "length": 20, + "start": 13591 + } + ] + } + } +} diff --git a/src/context/abis/GammaCardsNFT.v1.sol/NofGammaCardsNFTV1.json b/src/context/abis/gamma/GammaCardsNFT.v1.sol/NofGammaCardsNFTV1.json similarity index 99% rename from src/context/abis/GammaCardsNFT.v1.sol/NofGammaCardsNFTV1.json rename to src/context/abis/gamma/GammaCardsNFT.v1.sol/NofGammaCardsNFTV1.json index 27b779bb..215d0923 100644 --- a/src/context/abis/GammaCardsNFT.v1.sol/NofGammaCardsNFTV1.json +++ b/src/context/abis/gamma/GammaCardsNFT.v1.sol/NofGammaCardsNFTV1.json @@ -384,8 +384,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020016947616d6d61436172647360b01b815250604051806040016040528060068152602001654e4f465f474360d01b815250816000908162000065919062000122565b50600162000074828262000122565b505050620001ee565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a857607f821691505b602082108103620000c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011d57600081815260208120601f850160051c81016020861015620000f85750805b601f850160051c820191505b81811015620001195782815560010162000104565b5050505b505050565b81516001600160401b038111156200013e576200013e6200007d565b62000156816200014f845462000093565b84620000cf565b602080601f8311600181146200018e5760008415620001755750858301515b600019600386901b1c1916600185901b17855562000119565b600085815260208120601f198616915b82811015620001bf578886015182559484019460019091019084016200019e565b5085821015620001de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6113c380620001fe6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f57806342966c681461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610f4f565b610256565b60405190151581526020015b60405180910390f35b61011f610267565b60405161010e9190610fbc565b61013f61013a366004610fcf565b6102f9565b6040516001600160a01b03909116815260200161010e565b61016a610165366004611004565b610320565b005b61016a61017a36600461102e565b61043a565b61016a61018d36600461102e565b61046c565b61016a6101a0366004610fcf565b610487565b61013f6101b3366004610fcf565b6104b8565b6101cb6101c636600461106a565b610518565b60405190815260200161010e565b61011f61059e565b61016a6101ef366004611085565b6105ad565b61016a6102023660046110d7565b6105bc565b61011f610215366004610fcf565b6105f4565b6101026102283660046111b3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610261826105ff565b92915050565b606060008054610276906111e6565b80601f01602080910402602001604051908101604052809291908181526020018280546102a2906111e6565b80156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b5050505050905090565b600061030482610624565b506000908152600460205260409020546001600160a01b031690565b600061032b826104b8565b9050806001600160a01b0316836001600160a01b03160361039d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103b957506103b98133610228565b61042b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610394565b6104358383610683565b505050565b610445335b826106f1565b6104615760405162461bcd60e51b815260040161039490611220565b610435838383610770565b610435838383604051806020016040528060008152506105bc565b6104903361043f565b6104ac5760405162461bcd60e51b815260040161039490611220565b6104b5816108d4565b50565b6000818152600260205260408120546001600160a01b0316806102615760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b60006001600160a01b0382166105825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610394565b506001600160a01b031660009081526003602052604090205490565b606060018054610276906111e6565b6105b83383836108dd565b5050565b6105c633836106f1565b6105e25760405162461bcd60e51b815260040161039490611220565b6105ee848484846109ab565b50505050565b6060610261826109de565b60006001600160e01b03198216632483248360e11b1480610261575061026182610ae6565b6000818152600260205260409020546001600160a01b03166104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106b8826104b8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806106fd836104b8565b9050806001600160a01b0316846001600160a01b0316148061074457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107685750836001600160a01b031661075d846102f9565b6001600160a01b0316145b949350505050565b826001600160a01b0316610783826104b8565b6001600160a01b0316146107a95760405162461bcd60e51b81526004016103949061126d565b6001600160a01b03821661080b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610394565b826001600160a01b031661081e826104b8565b6001600160a01b0316146108445760405162461bcd60e51b81526004016103949061126d565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6104b581610b36565b816001600160a01b0316836001600160a01b03160361093e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610394565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109b6848484610770565b6109c284848484610b76565b6105ee5760405162461bcd60e51b8152600401610394906112b2565b60606109e982610624565b60008281526006602052604081208054610a02906111e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2e906111e6565b8015610a7b5780601f10610a5057610100808354040283529160200191610a7b565b820191906000526020600020905b815481529060010190602001808311610a5e57829003601f168201915b505050505090506000610a9960408051602081019091526000815290565b90508051600003610aab575092915050565b815115610add578082604051602001610ac5929190611304565b60405160208183030381529060405292505050919050565b61076884610c77565b60006001600160e01b031982166380ac58cd60e01b1480610b1757506001600160e01b03198216635b5e139f60e01b145b8061026157506301ffc9a760e01b6001600160e01b0319831614610261565b610b3f81610ceb565b60008181526006602052604090208054610b58906111e6565b1590506104b55760008181526006602052604081206104b591610eeb565b60006001600160a01b0384163b15610c6c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610bba903390899088908890600401611333565b6020604051808303816000875af1925050508015610bf5575060408051601f3d908101601f19168201909252610bf291810190611370565b60015b610c52573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b508051600003610c4a5760405162461bcd60e51b8152600401610394906112b2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610768565b506001949350505050565b6060610c8282610624565b6000610c9960408051602081019091526000815290565b90506000815111610cb95760405180602001604052806000815250610ce4565b80610cc384610d80565b604051602001610cd4929190611304565b6040516020818303038152906040525b9392505050565b6000610cf6826104b8565b9050610d01826104b8565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606000610d8d83610e13565b600101905060008167ffffffffffffffff811115610dad57610dad6110c1565b6040519080825280601f01601f191660200182016040528015610dd7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610de157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610e7e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9c57662386f26fc10000830492506010015b6305f5e1008310610eb4576305f5e100830492506008015b6127108310610ec857612710830492506004015b60648310610eda576064830492506002015b600a83106102615760010192915050565b508054610ef7906111e6565b6000825580601f10610f07575050565b601f0160209004906000526020600020908101906104b591905b80821115610f355760008155600101610f21565b5090565b6001600160e01b0319811681146104b557600080fd5b600060208284031215610f6157600080fd5b8135610ce481610f39565b60005b83811015610f87578181015183820152602001610f6f565b50506000910152565b60008151808452610fa8816020860160208601610f6c565b601f01601f19169290920160200192915050565b602081526000610ce46020830184610f90565b600060208284031215610fe157600080fd5b5035919050565b80356001600160a01b0381168114610fff57600080fd5b919050565b6000806040838503121561101757600080fd5b61102083610fe8565b946020939093013593505050565b60008060006060848603121561104357600080fd5b61104c84610fe8565b925061105a60208501610fe8565b9150604084013590509250925092565b60006020828403121561107c57600080fd5b610ce482610fe8565b6000806040838503121561109857600080fd5b6110a183610fe8565b9150602083013580151581146110b657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156110ed57600080fd5b6110f685610fe8565b935061110460208601610fe8565b925060408501359150606085013567ffffffffffffffff8082111561112857600080fd5b818701915087601f83011261113c57600080fd5b81358181111561114e5761114e6110c1565b604051601f8201601f19908116603f01168101908382118183101715611176576111766110c1565b816040528281528a602084870101111561118f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156111c657600080fd5b6111cf83610fe8565b91506111dd60208401610fe8565b90509250929050565b600181811c908216806111fa57607f821691505b60208210810361121a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611316818460208801610f6c565b83519083019061132a818360208801610f6c565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061136690830184610f90565b9695505050505050565b60006020828403121561138257600080fd5b8151610ce481610f3956fea2646970667358221220e08a3b2b261b9ae224ea2bfae48f715a5b58c0f2d8e5e6ea25c65957bbb0dce564736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f57806342966c681461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610f4f565b610256565b60405190151581526020015b60405180910390f35b61011f610267565b60405161010e9190610fbc565b61013f61013a366004610fcf565b6102f9565b6040516001600160a01b03909116815260200161010e565b61016a610165366004611004565b610320565b005b61016a61017a36600461102e565b61043a565b61016a61018d36600461102e565b61046c565b61016a6101a0366004610fcf565b610487565b61013f6101b3366004610fcf565b6104b8565b6101cb6101c636600461106a565b610518565b60405190815260200161010e565b61011f61059e565b61016a6101ef366004611085565b6105ad565b61016a6102023660046110d7565b6105bc565b61011f610215366004610fcf565b6105f4565b6101026102283660046111b3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610261826105ff565b92915050565b606060008054610276906111e6565b80601f01602080910402602001604051908101604052809291908181526020018280546102a2906111e6565b80156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b5050505050905090565b600061030482610624565b506000908152600460205260409020546001600160a01b031690565b600061032b826104b8565b9050806001600160a01b0316836001600160a01b03160361039d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103b957506103b98133610228565b61042b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610394565b6104358383610683565b505050565b610445335b826106f1565b6104615760405162461bcd60e51b815260040161039490611220565b610435838383610770565b610435838383604051806020016040528060008152506105bc565b6104903361043f565b6104ac5760405162461bcd60e51b815260040161039490611220565b6104b5816108d4565b50565b6000818152600260205260408120546001600160a01b0316806102615760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b60006001600160a01b0382166105825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610394565b506001600160a01b031660009081526003602052604090205490565b606060018054610276906111e6565b6105b83383836108dd565b5050565b6105c633836106f1565b6105e25760405162461bcd60e51b815260040161039490611220565b6105ee848484846109ab565b50505050565b6060610261826109de565b60006001600160e01b03198216632483248360e11b1480610261575061026182610ae6565b6000818152600260205260409020546001600160a01b03166104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106b8826104b8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806106fd836104b8565b9050806001600160a01b0316846001600160a01b0316148061074457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107685750836001600160a01b031661075d846102f9565b6001600160a01b0316145b949350505050565b826001600160a01b0316610783826104b8565b6001600160a01b0316146107a95760405162461bcd60e51b81526004016103949061126d565b6001600160a01b03821661080b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610394565b826001600160a01b031661081e826104b8565b6001600160a01b0316146108445760405162461bcd60e51b81526004016103949061126d565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6104b581610b36565b816001600160a01b0316836001600160a01b03160361093e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610394565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109b6848484610770565b6109c284848484610b76565b6105ee5760405162461bcd60e51b8152600401610394906112b2565b60606109e982610624565b60008281526006602052604081208054610a02906111e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2e906111e6565b8015610a7b5780601f10610a5057610100808354040283529160200191610a7b565b820191906000526020600020905b815481529060010190602001808311610a5e57829003601f168201915b505050505090506000610a9960408051602081019091526000815290565b90508051600003610aab575092915050565b815115610add578082604051602001610ac5929190611304565b60405160208183030381529060405292505050919050565b61076884610c77565b60006001600160e01b031982166380ac58cd60e01b1480610b1757506001600160e01b03198216635b5e139f60e01b145b8061026157506301ffc9a760e01b6001600160e01b0319831614610261565b610b3f81610ceb565b60008181526006602052604090208054610b58906111e6565b1590506104b55760008181526006602052604081206104b591610eeb565b60006001600160a01b0384163b15610c6c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610bba903390899088908890600401611333565b6020604051808303816000875af1925050508015610bf5575060408051601f3d908101601f19168201909252610bf291810190611370565b60015b610c52573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b508051600003610c4a5760405162461bcd60e51b8152600401610394906112b2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610768565b506001949350505050565b6060610c8282610624565b6000610c9960408051602081019091526000815290565b90506000815111610cb95760405180602001604052806000815250610ce4565b80610cc384610d80565b604051602001610cd4929190611304565b6040516020818303038152906040525b9392505050565b6000610cf6826104b8565b9050610d01826104b8565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606000610d8d83610e13565b600101905060008167ffffffffffffffff811115610dad57610dad6110c1565b6040519080825280601f01601f191660200182016040528015610dd7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610de157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610e7e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9c57662386f26fc10000830492506010015b6305f5e1008310610eb4576305f5e100830492506008015b6127108310610ec857612710830492506004015b60648310610eda576064830492506002015b600a83106102615760010192915050565b508054610ef7906111e6565b6000825580601f10610f07575050565b601f0160209004906000526020600020908101906104b591905b80821115610f355760008155600101610f21565b5090565b6001600160e01b0319811681146104b557600080fd5b600060208284031215610f6157600080fd5b8135610ce481610f39565b60005b83811015610f87578181015183820152602001610f6f565b50506000910152565b60008151808452610fa8816020860160208601610f6c565b601f01601f19169290920160200192915050565b602081526000610ce46020830184610f90565b600060208284031215610fe157600080fd5b5035919050565b80356001600160a01b0381168114610fff57600080fd5b919050565b6000806040838503121561101757600080fd5b61102083610fe8565b946020939093013593505050565b60008060006060848603121561104357600080fd5b61104c84610fe8565b925061105a60208501610fe8565b9150604084013590509250925092565b60006020828403121561107c57600080fd5b610ce482610fe8565b6000806040838503121561109857600080fd5b6110a183610fe8565b9150602083013580151581146110b657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156110ed57600080fd5b6110f685610fe8565b935061110460208601610fe8565b925060408501359150606085013567ffffffffffffffff8082111561112857600080fd5b818701915087601f83011261113c57600080fd5b81358181111561114e5761114e6110c1565b604051601f8201601f19908116603f01168101908382118183101715611176576111766110c1565b816040528281528a602084870101111561118f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156111c657600080fd5b6111cf83610fe8565b91506111dd60208401610fe8565b90509250929050565b600181811c908216806111fa57607f821691505b60208210810361121a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611316818460208801610f6c565b83519083019061132a818360208801610f6c565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061136690830184610f90565b9695505050505050565b60006020828403121561138257600080fd5b8151610ce481610f3956fea2646970667358221220e08a3b2b261b9ae224ea2bfae48f715a5b58c0f2d8e5e6ea25c65957bbb0dce564736f6c63430008140033", + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020016947616d6d61436172647360b01b815250604051806040016040528060068152602001654e4f465f474360d01b815250816000908162000065919062000122565b50600162000074828262000122565b505050620001ee565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a857607f821691505b602082108103620000c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011d57600081815260208120601f850160051c81016020861015620000f85750805b601f850160051c820191505b81811015620001195782815560010162000104565b5050505b505050565b81516001600160401b038111156200013e576200013e6200007d565b62000156816200014f845462000093565b84620000cf565b602080601f8311600181146200018e5760008415620001755750858301515b600019600386901b1c1916600185901b17855562000119565b600085815260208120601f198616915b82811015620001bf578886015182559484019460019091019084016200019e565b5085821015620001de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6113c380620001fe6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f57806342966c681461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610f4f565b610256565b60405190151581526020015b60405180910390f35b61011f610267565b60405161010e9190610fbc565b61013f61013a366004610fcf565b6102f9565b6040516001600160a01b03909116815260200161010e565b61016a610165366004611004565b610320565b005b61016a61017a36600461102e565b61043a565b61016a61018d36600461102e565b61046c565b61016a6101a0366004610fcf565b610487565b61013f6101b3366004610fcf565b6104b8565b6101cb6101c636600461106a565b610518565b60405190815260200161010e565b61011f61059e565b61016a6101ef366004611085565b6105ad565b61016a6102023660046110d7565b6105bc565b61011f610215366004610fcf565b6105f4565b6101026102283660046111b3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610261826105ff565b92915050565b606060008054610276906111e6565b80601f01602080910402602001604051908101604052809291908181526020018280546102a2906111e6565b80156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b5050505050905090565b600061030482610624565b506000908152600460205260409020546001600160a01b031690565b600061032b826104b8565b9050806001600160a01b0316836001600160a01b03160361039d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103b957506103b98133610228565b61042b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610394565b6104358383610683565b505050565b610445335b826106f1565b6104615760405162461bcd60e51b815260040161039490611220565b610435838383610770565b610435838383604051806020016040528060008152506105bc565b6104903361043f565b6104ac5760405162461bcd60e51b815260040161039490611220565b6104b5816108d4565b50565b6000818152600260205260408120546001600160a01b0316806102615760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b60006001600160a01b0382166105825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610394565b506001600160a01b031660009081526003602052604090205490565b606060018054610276906111e6565b6105b83383836108dd565b5050565b6105c633836106f1565b6105e25760405162461bcd60e51b815260040161039490611220565b6105ee848484846109ab565b50505050565b6060610261826109de565b60006001600160e01b03198216632483248360e11b1480610261575061026182610ae6565b6000818152600260205260409020546001600160a01b03166104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106b8826104b8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806106fd836104b8565b9050806001600160a01b0316846001600160a01b0316148061074457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107685750836001600160a01b031661075d846102f9565b6001600160a01b0316145b949350505050565b826001600160a01b0316610783826104b8565b6001600160a01b0316146107a95760405162461bcd60e51b81526004016103949061126d565b6001600160a01b03821661080b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610394565b826001600160a01b031661081e826104b8565b6001600160a01b0316146108445760405162461bcd60e51b81526004016103949061126d565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6104b581610b36565b816001600160a01b0316836001600160a01b03160361093e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610394565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109b6848484610770565b6109c284848484610b76565b6105ee5760405162461bcd60e51b8152600401610394906112b2565b60606109e982610624565b60008281526006602052604081208054610a02906111e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2e906111e6565b8015610a7b5780601f10610a5057610100808354040283529160200191610a7b565b820191906000526020600020905b815481529060010190602001808311610a5e57829003601f168201915b505050505090506000610a9960408051602081019091526000815290565b90508051600003610aab575092915050565b815115610add578082604051602001610ac5929190611304565b60405160208183030381529060405292505050919050565b61076884610c77565b60006001600160e01b031982166380ac58cd60e01b1480610b1757506001600160e01b03198216635b5e139f60e01b145b8061026157506301ffc9a760e01b6001600160e01b0319831614610261565b610b3f81610ceb565b60008181526006602052604090208054610b58906111e6565b1590506104b55760008181526006602052604081206104b591610eeb565b60006001600160a01b0384163b15610c6c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610bba903390899088908890600401611333565b6020604051808303816000875af1925050508015610bf5575060408051601f3d908101601f19168201909252610bf291810190611370565b60015b610c52573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b508051600003610c4a5760405162461bcd60e51b8152600401610394906112b2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610768565b506001949350505050565b6060610c8282610624565b6000610c9960408051602081019091526000815290565b90506000815111610cb95760405180602001604052806000815250610ce4565b80610cc384610d80565b604051602001610cd4929190611304565b6040516020818303038152906040525b9392505050565b6000610cf6826104b8565b9050610d01826104b8565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606000610d8d83610e13565b600101905060008167ffffffffffffffff811115610dad57610dad6110c1565b6040519080825280601f01601f191660200182016040528015610dd7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610de157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610e7e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9c57662386f26fc10000830492506010015b6305f5e1008310610eb4576305f5e100830492506008015b6127108310610ec857612710830492506004015b60648310610eda576064830492506002015b600a83106102615760010192915050565b508054610ef7906111e6565b6000825580601f10610f07575050565b601f0160209004906000526020600020908101906104b591905b80821115610f355760008155600101610f21565b5090565b6001600160e01b0319811681146104b557600080fd5b600060208284031215610f6157600080fd5b8135610ce481610f39565b60005b83811015610f87578181015183820152602001610f6f565b50506000910152565b60008151808452610fa8816020860160208601610f6c565b601f01601f19169290920160200192915050565b602081526000610ce46020830184610f90565b600060208284031215610fe157600080fd5b5035919050565b80356001600160a01b0381168114610fff57600080fd5b919050565b6000806040838503121561101757600080fd5b61102083610fe8565b946020939093013593505050565b60008060006060848603121561104357600080fd5b61104c84610fe8565b925061105a60208501610fe8565b9150604084013590509250925092565b60006020828403121561107c57600080fd5b610ce482610fe8565b6000806040838503121561109857600080fd5b6110a183610fe8565b9150602083013580151581146110b657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156110ed57600080fd5b6110f685610fe8565b935061110460208601610fe8565b925060408501359150606085013567ffffffffffffffff8082111561112857600080fd5b818701915087601f83011261113c57600080fd5b81358181111561114e5761114e6110c1565b604051601f8201601f19908116603f01168101908382118183101715611176576111766110c1565b816040528281528a602084870101111561118f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156111c657600080fd5b6111cf83610fe8565b91506111dd60208401610fe8565b90509250929050565b600181811c908216806111fa57607f821691505b60208210810361121a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611316818460208801610f6c565b83519083019061132a818360208801610f6c565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061136690830184610f90565b9695505050505050565b60006020828403121561138257600080fd5b8151610ce481610f3956fea2646970667358221220f2ee410a99715667683fa224eb5be2c0b6c98edb2b01b26a54d1a13e0e3f5ce164736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f57806342966c681461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610f4f565b610256565b60405190151581526020015b60405180910390f35b61011f610267565b60405161010e9190610fbc565b61013f61013a366004610fcf565b6102f9565b6040516001600160a01b03909116815260200161010e565b61016a610165366004611004565b610320565b005b61016a61017a36600461102e565b61043a565b61016a61018d36600461102e565b61046c565b61016a6101a0366004610fcf565b610487565b61013f6101b3366004610fcf565b6104b8565b6101cb6101c636600461106a565b610518565b60405190815260200161010e565b61011f61059e565b61016a6101ef366004611085565b6105ad565b61016a6102023660046110d7565b6105bc565b61011f610215366004610fcf565b6105f4565b6101026102283660046111b3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610261826105ff565b92915050565b606060008054610276906111e6565b80601f01602080910402602001604051908101604052809291908181526020018280546102a2906111e6565b80156102ef5780601f106102c4576101008083540402835291602001916102ef565b820191906000526020600020905b8154815290600101906020018083116102d257829003601f168201915b5050505050905090565b600061030482610624565b506000908152600460205260409020546001600160a01b031690565b600061032b826104b8565b9050806001600160a01b0316836001600160a01b03160361039d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103b957506103b98133610228565b61042b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610394565b6104358383610683565b505050565b610445335b826106f1565b6104615760405162461bcd60e51b815260040161039490611220565b610435838383610770565b610435838383604051806020016040528060008152506105bc565b6104903361043f565b6104ac5760405162461bcd60e51b815260040161039490611220565b6104b5816108d4565b50565b6000818152600260205260408120546001600160a01b0316806102615760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b60006001600160a01b0382166105825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610394565b506001600160a01b031660009081526003602052604090205490565b606060018054610276906111e6565b6105b83383836108dd565b5050565b6105c633836106f1565b6105e25760405162461bcd60e51b815260040161039490611220565b6105ee848484846109ab565b50505050565b6060610261826109de565b60006001600160e01b03198216632483248360e11b1480610261575061026182610ae6565b6000818152600260205260409020546001600160a01b03166104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610394565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106b8826104b8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806106fd836104b8565b9050806001600160a01b0316846001600160a01b0316148061074457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107685750836001600160a01b031661075d846102f9565b6001600160a01b0316145b949350505050565b826001600160a01b0316610783826104b8565b6001600160a01b0316146107a95760405162461bcd60e51b81526004016103949061126d565b6001600160a01b03821661080b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610394565b826001600160a01b031661081e826104b8565b6001600160a01b0316146108445760405162461bcd60e51b81526004016103949061126d565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6104b581610b36565b816001600160a01b0316836001600160a01b03160361093e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610394565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109b6848484610770565b6109c284848484610b76565b6105ee5760405162461bcd60e51b8152600401610394906112b2565b60606109e982610624565b60008281526006602052604081208054610a02906111e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2e906111e6565b8015610a7b5780601f10610a5057610100808354040283529160200191610a7b565b820191906000526020600020905b815481529060010190602001808311610a5e57829003601f168201915b505050505090506000610a9960408051602081019091526000815290565b90508051600003610aab575092915050565b815115610add578082604051602001610ac5929190611304565b60405160208183030381529060405292505050919050565b61076884610c77565b60006001600160e01b031982166380ac58cd60e01b1480610b1757506001600160e01b03198216635b5e139f60e01b145b8061026157506301ffc9a760e01b6001600160e01b0319831614610261565b610b3f81610ceb565b60008181526006602052604090208054610b58906111e6565b1590506104b55760008181526006602052604081206104b591610eeb565b60006001600160a01b0384163b15610c6c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610bba903390899088908890600401611333565b6020604051808303816000875af1925050508015610bf5575060408051601f3d908101601f19168201909252610bf291810190611370565b60015b610c52573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b508051600003610c4a5760405162461bcd60e51b8152600401610394906112b2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610768565b506001949350505050565b6060610c8282610624565b6000610c9960408051602081019091526000815290565b90506000815111610cb95760405180602001604052806000815250610ce4565b80610cc384610d80565b604051602001610cd4929190611304565b6040516020818303038152906040525b9392505050565b6000610cf6826104b8565b9050610d01826104b8565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60606000610d8d83610e13565b600101905060008167ffffffffffffffff811115610dad57610dad6110c1565b6040519080825280601f01601f191660200182016040528015610dd7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610de157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610e7e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9c57662386f26fc10000830492506010015b6305f5e1008310610eb4576305f5e100830492506008015b6127108310610ec857612710830492506004015b60648310610eda576064830492506002015b600a83106102615760010192915050565b508054610ef7906111e6565b6000825580601f10610f07575050565b601f0160209004906000526020600020908101906104b591905b80821115610f355760008155600101610f21565b5090565b6001600160e01b0319811681146104b557600080fd5b600060208284031215610f6157600080fd5b8135610ce481610f39565b60005b83811015610f87578181015183820152602001610f6f565b50506000910152565b60008151808452610fa8816020860160208601610f6c565b601f01601f19169290920160200192915050565b602081526000610ce46020830184610f90565b600060208284031215610fe157600080fd5b5035919050565b80356001600160a01b0381168114610fff57600080fd5b919050565b6000806040838503121561101757600080fd5b61102083610fe8565b946020939093013593505050565b60008060006060848603121561104357600080fd5b61104c84610fe8565b925061105a60208501610fe8565b9150604084013590509250925092565b60006020828403121561107c57600080fd5b610ce482610fe8565b6000806040838503121561109857600080fd5b6110a183610fe8565b9150602083013580151581146110b657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156110ed57600080fd5b6110f685610fe8565b935061110460208601610fe8565b925060408501359150606085013567ffffffffffffffff8082111561112857600080fd5b818701915087601f83011261113c57600080fd5b81358181111561114e5761114e6110c1565b604051601f8201601f19908116603f01168101908382118183101715611176576111766110c1565b816040528281528a602084870101111561118f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156111c657600080fd5b6111cf83610fe8565b91506111dd60208401610fe8565b90509250929050565b600181811c908216806111fa57607f821691505b60208210810361121a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611316818460208801610f6c565b83519083019061132a818360208801610f6c565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061136690830184610f90565b9695505050505050565b60006020828403121561138257600080fd5b8151610ce481610f3956fea2646970667358221220f2ee410a99715667683fa224eb5be2c0b6c98edb2b01b26a54d1a13e0e3f5ce164736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/context/abis/GammaOffers.v4.sol/IGammaCardsContract.json b/src/context/abis/gamma/GammaOffers.v4.sol/IGammaCardsContract.json similarity index 100% rename from src/context/abis/GammaOffers.v4.sol/IGammaCardsContract.json rename to src/context/abis/gamma/GammaOffers.v4.sol/IGammaCardsContract.json diff --git a/src/context/abis/gamma/GammaOffers.v4.sol/NofGammaOffersV4.json b/src/context/abis/gamma/GammaOffers.v4.sol/NofGammaOffersV4.json new file mode 100644 index 00000000..e38152cc --- /dev/null +++ b/src/context/abis/gamma/GammaOffers.v4.sol/NofGammaOffersV4.json @@ -0,0 +1,1022 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NofGammaOffersV4", + "sourceName": "contracts/gamma/GammaOffers.v4.sol", + "abi": [ + { + "inputs": [], + "name": "ExchangeError", + "type": "error" + }, + { + "inputs": [], + "name": "GammaCardsContractNotSet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCard", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCardNumber", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOfferId", + "type": "error" + }, + { + "inputs": [], + "name": "OfferAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "OfferDoesNotExists", + "type": "error" + }, + { + "inputs": [], + "name": "OfferNotDeleted", + "type": "error" + }, + { + "inputs": [], + "name": "OffersMaximumAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyCardsContract", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyOwners", + "type": "error" + }, + { + "inputs": [], + "name": "RemoveOfferFromCardNumberMapping_DoNotMatch", + "type": "error" + }, + { + "inputs": [], + "name": "RemoveOfferFromUserMapping_DoNotMatch", + "type": "error" + }, + { + "inputs": [], + "name": "UserAlreadyHasCard", + "type": "error" + }, + { + "inputs": [], + "name": "UserDoesNotHaveCard", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "AllOffersRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newGammaCardsContract", + "type": "address" + } + ], + "name": "NewGammaCardsContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + } + ], + "name": "OfferCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "OfferRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "UserOffersRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "canAnyUserPublishOffer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "canUserPublishOffer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_value", + "type": "bool" + } + ], + "name": "changeRemoveCardinInventoryWhenOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumberWanted", + "type": "uint8" + }, + { + "internalType": "address", + "name": "offerWallet", + "type": "address" + }, + { + "internalType": "uint8", + "name": "offerCardNumber", + "type": "uint8" + } + ], + "name": "confirmOfferExchange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + } + ], + "name": "createOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + } + ], + "name": "createOfferWithoUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deleteAllOffers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gammaCardsContract", + "outputs": [ + { + "internalType": "contract IGammaCardsContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxOffersAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxOffersByUserAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getOfferByIndex", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV4.Offer", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + } + ], + "name": "getOfferByOfferId", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV4.Offer", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "getOfferByUserAndCardNumber", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV4.Offer", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOffers", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV4.Offer[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "getOffersByCardNumber", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV4.Offer[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "getOffersByCardNumberCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getOffersByUser", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV4.Offer[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getOffersByUserCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOffersCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "hasOffer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_cardsContract", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "offers", + "outputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "offersByCardNumberCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "offersByUserCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "offersTotalCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "removeOfferByCardNumber", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "removeOfferByUserAndCardNumber", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "removeOffersByUser", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ownerToRemove", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaCardsContract", + "type": "address" + } + ], + "name": "setGammaCardsContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxCardNumbersAllowed", + "type": "uint256" + } + ], + "name": "setMaxCardNumbersAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxOffersAllowed", + "type": "uint256" + } + ], + "name": "setMaxOffersAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxOffersByUserAllowed", + "type": "uint256" + } + ], + "name": "setMaxOffersByUserAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526113886004556005805560786006556007805460ff191690553480156200002a57600080fd5b5062000036336200003c565b6200008c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b613712806200009c6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80637594a6ed11610130578063ce7483d5116100b8578063e2b365961161007c578063e2b3659614610515578063e359a0a114610528578063e5e5f7321461053b578063f2fde38b1461054e578063fc9e80fc1461056157600080fd5b8063ce7483d5146104a4578063cf86f8e5146104c7578063d250f03a146104cf578063d827a8f4146104e2578063e02f97231461050257600080fd5b806390222aa1116100ff57806390222aa11461044e5780639618b333146104565780639f91506914610469578063ba79b77b14610489578063c08029e71461049157600080fd5b80637594a6ed146103d35780638400a189146103f35780638a72ea6a146104065780638da5cb5b1461042957600080fd5b80633a027073116101be5780635a919aeb116101825780635a919aeb146103905780635bbfbfd614610399578063619980dc146103ac5780637065cb48146103b8578063715018a6146103cb57600080fd5b80633a0270731461032f5780633e293e16146103425780633ee992ee146103555780634c7a7ad31461036a57806358e57ebb1461037d57600080fd5b806329d3f60b1161020557806329d3f60b146102985780632edb5fcf146102d55780632f54bf6e146102e8578063322fba27146103145780633808dfe71461031c57600080fd5b80630cdb311714610237578063173825d91461025d57806317a1fed91461027257806319ab453c14610285575b600080fd5b61024a610245366004612e02565b610574565b6040519081526020015b60405180910390f35b61027061026b366004612e02565b6105b9565b005b610270610280366004612f73565b61065f565b610270610293366004612e02565b6106a1565b6102c56102a6366004612e02565b6001600160a01b03166000908152600b60205260409020546005541190565b6040519015158152602001610254565b6102c56102e3366004612ff8565b61070c565b6102c56102f6366004612e02565b6001600160a01b031660009081526002602052604090205460ff1690565b6102706107cc565b61027061032a36600461302b565b61097b565b6102c561033d366004613044565b6109b0565b61027061035036600461305f565b6109f8565b61035d610a09565b60405161025491906131c5565b610270610378366004612e02565b610b9d565b61027061038b366004613235565b610c48565b61024a600d5481565b6102c56103a7366004612ff8565b610c8b565b600d54600454116102c5565b6102706103c6366004612e02565b610d0c565b610270610d83565b61024a6103e1366004612e02565b600b6020526000908152604090205481565b61035d610401366004613044565b610d97565b61041961041436600461302b565b610f3b565b6040516102549493929190613252565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610254565b60045461024a565b61035d610464366004612e02565b611013565b61047c610477366004612ff8565b6111d6565b604051610254919061328d565b60055461024a565b61027061049f3660046132a0565b6113e6565b61024a6104b2366004613044565b60ff166000908152600c602052604090205490565b600d5461024a565b600154610436906001600160a01b031681565b61024a6104f0366004613044565b600c6020526000908152604090205481565b61027061051036600461302b565b61170a565b61047c6105233660046132f4565b61173f565b61047c61053636600461302b565b611948565b61027061054936600461302b565b611ad4565b61027061055c366004612e02565b611b09565b6102c561056f366004612e02565b611b87565b60006001600160a01b03821661059d5760405163e6c4247b60e01b815260040160405180910390fd5b506001600160a01b03166000908152600b602052604090205490565b3360009081526002602052604090205460ff166105e957604051634289c49360e01b815260040160405180910390fd5b604051632dd92c6960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b5050505050565b3360009081526002602052604090205460ff1661068f57604051634289c49360e01b815260040160405180910390fd5b61069b84848484611dd2565b50505050565b6106a9612305565b6001600160a01b0381166106d05760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091178155336000908152600260205260409020805460ff19169091179055565b60006001600160a01b0383166107355760405163e6c4247b60e01b815260040160405180910390fd5b60005b6001600160a01b0384166000908152600b60205260409020548110156107c0576001600160a01b0384166000908152600960205260409020805460ff851691908390811061078857610788613329565b600091825260209091206001600590920201015460ff16036107ae5760019150506107c6565b806107b881613355565b915050610738565b50600090505b92915050565b3360009081526002602052604090205460ff166107fc57604051634289c49360e01b815260040160405180910390fd5b60005b60085481101561093c57600960006008838154811061082057610820613329565b60009182526020808320600360059093020191909101546001600160a01b03168352820192909252604001812061085691612bd7565b6000600b60006008848154811061086f5761086f613329565b60009182526020808320600360059093020191909101546001600160a01b0316835282019290925260400181209190915560088054600a929190849081106108b9576108b9613329565b600091825260208083206001600590930201919091015460ff16835282019290925260400181206108e991612bd7565b6000600c60006008848154811061090257610902613329565b600091825260208083206001600590930201919091015460ff1683528201929092526040019020558061093481613355565b9150506107ff565b506000600d81905561095090600890612bd7565b6040517f47e81efc038e27bb296dec5d44262943d2c2bbec28f461787a9cc53885694cb090600090a1565b3360009081526002602052604090205460ff166109ab57604051634289c49360e01b815260040160405180910390fd5b600555565b6000806109bd33846111d6565b60608101519091506001600160a01b031633146109dd5750600092915050565b60006109f033858460000151600061235f565b949350505050565b610a0483338484611dd2565b505050565b60606008805480602002602001604051908101604052809291908181526020016000905b82821015610b9457838290600052602060002090600502016040518060a0016040529081600082018054610a609061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8c9061336e565b8015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610b5957602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b2a5790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610a2d565b50505050905090565b3360009081526002602052604090205460ff16610bcd57604051634289c49360e01b815260040160405180910390fd5b6001600160a01b038116610bf45760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa9060200160405180910390a150565b3360009081526002602052604090205460ff16610c7857604051634289c49360e01b815260040160405180910390fd5b6007805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610cbb57604051634289c49360e01b815260040160405180910390fd5b6000610cc784846111d6565b9050836001600160a01b031681606001516001600160a01b031614610cf05760009150506107c6565b6000610d0385858460000151600061235f565b95945050505050565b3360009081526002602052604090205460ff16610d3c57604051634289c49360e01b815260040160405180910390fd5b604051632d35e2b960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae49060440161062c565b610d8b612305565b610d9560006124d6565b565b60ff81166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f3057838290600052602060002090600502016040518060a0016040529081600082018054610dfc9061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e289061336e565b8015610e755780601f10610e4a57610100808354040283529160200191610e75565b820191906000526020600020905b815481529060010190602001808311610e5857829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610ef557602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610ec65790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610dc9565b505050509050919050565b60088181548110610f4b57600080fd5b9060005260206000209060050201600091509050806000018054610f6e9061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9a9061336e565b8015610fe75780601f10610fbc57610100808354040283529160200191610fe7565b820191906000526020600020905b815481529060010190602001808311610fca57829003601f168201915b5050505060018301546003840154600490940154929360ff909116926001600160a01b03909116915084565b60606001600160a01b03821661103c5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216600090815260096020908152604080832080548251818502810185019093528083529193909284015b82821015610f3057838290600052602060002090600502016040518060a00160405290816000820180546110a29061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546110ce9061336e565b801561111b5780601f106110f05761010080835404028352916020019161111b565b820191906000526020600020905b8154815290600101906020018083116110fe57829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561119b57602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161116c5790505b505050918352505060038201546001600160a01b0316602080830191909152600490920154604090910152908252600192909201910161106f565b6111de612bf8565b6001600160a01b0383166112055760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600960209081526040808320600b90925282205490915b818110156113dd578460ff1683828154811061124957611249613329565b600091825260209091206001600590920201015460ff16036113cb5782818154811061127757611277613329565b90600052602060002090600502016040518060a00160405290816000820180546112a09061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546112cc9061336e565b80156113195780601f106112ee57610100808354040283529160200191611319565b820191906000526020600020905b8154815290600101906020018083116112fc57829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561139957602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161136a5790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015293506107c692505050565b806113d581613355565b91505061122b565b50610d03612526565b60006113f283836111d6565b9050826001600160a01b031681606001516001600160a01b03161461142a57604051631ded229360e11b815260040160405180910390fd5b604081015180516000036114d05760015460405163117ece1960e31b81526001600160a01b0390911690638bf670c89061146a90879089906004016133a8565b6020604051808303816000875af1158015611489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ad91906133c4565b156114cb57604051631177b29560e11b815260040160405180910390fd5b611545565b6000805b82518160ff161015611524578660ff16838260ff16815181106114f9576114f9613329565b602002602001015160ff16036115125760019150611524565b8061151c816133e1565b9150506114d4565b508061154357604051630eefa23760e11b815260040160405180910390fd5b505b600061155885858560000151600161235f565b90508061157857604051631b44035160e01b815260040160405180910390fd5b60015460405163568b427d60e11b81526001600160a01b03898116600483015260ff808a1660248401528882166044840152871660648301529091169063ad1684fa90608401600060405180830381600087803b1580156115d857600080fd5b505af11580156115ec573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c89150611622908a9088906004016133a8565b6020604051808303816000875af1158015611641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166591906133c4565b15806116e3575060015460405163117ece1960e31b81526001600160a01b0390911690638bf670c89061169e9088908a906004016133a8565b6020604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e191906133c4565b155b156117015760405163fc9716b960e01b815260040160405180910390fd5b50505050505050565b3360009081526002602052604090205460ff1661173a57604051634289c49360e01b815260040160405180910390fd5b600655565b611747612bf8565b60005b60085481101561193f57826040516020016117659190613400565b604051602081830303815290604052805190602001206008828154811061178e5761178e613329565b90600052602060002090600502016000016040516020016117af919061341c565b604051602081830303815290604052805190602001200361192d57600881815481106117dd576117dd613329565b90600052602060002090600502016040518060a00160405290816000820180546118069061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546118329061336e565b801561187f5780601f106118545761010080835404028352916020019161187f565b820191906000526020600020905b81548152906001019060200180831161186257829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156118ff57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116118d05790505b505050918352505060038201546001600160a01b031660208201526004909101546040909101529392505050565b8061193781613355565b91505061174a565b506107c6612526565b611950612bf8565b600854821061197257604051635129cab160e11b815260040160405180910390fd5b6008828154811061198557611985613329565b90600052602060002090600502016040518060a00160405290816000820180546119ae9061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546119da9061336e565b8015611a275780601f106119fc57610100808354040283529160200191611a27565b820191906000526020600020905b815481529060010190602001808311611a0a57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611aa757602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611a785790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015292915050565b3360009081526002602052604090205460ff16611b0457604051634289c49360e01b815260040160405180910390fd5b600455565b611b11612305565b6001600160a01b038116611b7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b611b84816124d6565b50565b6001546000906001600160a01b03163314611bb55760405163a71ed6c760e01b815260040160405180910390fd5b6001600160a01b038216611bdc5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600960209081526040808320600b90925282205490915b81811015611d55576000838281548110611c1e57611c1e613329565b90600052602060002090600502016000018054611c3a9061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c669061336e565b8015611cb35780601f10611c8857610100808354040283529160200191611cb3565b820191906000526020600020905b815481529060010190602001808311611c9657829003601f168201915b505050505090506000848381548110611cce57611cce613329565b600091825260209091206001600590920201015460ff169050611cf287828461256f565b611cfb82612823565b5060ff81166000908152600c60205260408120805460019290611d1f908490613492565b925050819055506001600d6000828254611d399190613492565b9250508190555050508080611d4d90613355565b915050611c02565b506001600160a01b0384166000908152600960205260408120611d7791612bd7565b6001600160a01b0384166000818152600b602090815260408083209290925590519182527f65419c67e554142d50c59abd004485123ca498611a223f842e75dd96225ba4c8910160405180910390a16001925050505b919050565b6001546001600160a01b0316611dfb5760405163cfdf350560e01b815260040160405180910390fd5b6005546001600160a01b0384166000908152600b602052604090205410611e355760405163182a7d7760e01b815260040160405180910390fd5b600454600d5410611e595760405163182a7d7760e01b815260040160405180910390fd5b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c890611e8c90879087906004016133a8565b6020604051808303816000875af1158015611eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ecf91906133c4565b905080611eef5760405163142d47a160e11b815260040160405180910390fd5b60005b82518160ff161015611f52578360ff16838260ff1681518110611f1757611f17613329565b602002602001015160ff1603611f4057604051630d1ecf1760e11b815260040160405180910390fd5b80611f4a816133e1565b915050611ef2565b506000611f5f85856111d6565b60608101519091506001600160a01b031615611f8e5760405163eeee5c8b60e01b815260040160405180910390fd5b6001600160a01b0385166000908152600b60205260408120805460019290611fb79084906134a5565b909155505060ff84166000908152600c60205260408120805460019290611fdf9084906134a5565b925050819055506001600d6000828254611ff991906134a5565b90915550506040805160a08101825287815260ff861660208201529081018490526001600160a01b038616606082015242608082015260088054600181018255600091909152815160059091027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3019081906120759082613506565b5060208281015160018301805460ff191660ff909216919091179055604083015180516120a89260028501920190612c33565b5060608201516003820180546001600160a01b0319166001600160a01b0392831617905560809092015160049091015585166000908152600960205260409020600880546120f890600190613492565b8154811061210857612108613329565b600091825260208083208454600181018655948452922060059182029092019202018061213583826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546121649284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560ff84166000908152600a60205260409020600880546121b690600190613492565b815481106121c6576121c6613329565b60009182526020808320845460018101865594845292206005918202909201920201806121f383826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546122229284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560075460ff16156122c257600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac9061228f90889088906004016133a8565b600060405180830381600087803b1580156122a957600080fd5b505af11580156122bd573d6000803e3d6000fd5b505050505b7fed750964f1f81f105e56dfd1121427e0898e7bc23d6c10e92d851a2d35e0cfc58585856040516122f593929190613699565b60405180910390a1505050505050565b6000546001600160a01b03163314610d955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611b72565b60006001600160a01b0385166123885760405163e6c4247b60e01b815260040160405180910390fd5b612393858585612aa0565b61239e85858561256f565b6123a783612823565b506001600160a01b0385166000908152600b602052604081208054600192906123d1908490613492565b909155505060ff84166000908152600c602052604081208054600192906123f9908490613492565b925050819055506001600d60008282546124139190613492565b909155505060075460ff168015612428575081155b1561249257600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f929061245f90889088906004016133a8565b600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f585856040516124c39291906133a8565b60405180910390a1506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61252e612bf8565b506040805160c081018252600060a0820181815282526020808301829052835182815290810184529282019290925260608101829052608081019190915290565b60ff82166000908152600a60205260408120905b8154811015610658576126418282815481106125a1576125a1613329565b906000526020600020906005020160000180546125bd9061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546125e99061336e565b80156126365780601f1061260b57610100808354040283529160200191612636565b820191906000526020600020905b81548152906001019060200180831161261957829003601f168201915b505050505084612b7e565b1561281157846001600160a01b031682828154811061266257612662613329565b60009182526020909120600360059092020101546001600160a01b03161415806126b757508360ff1682828154811061269d5761269d613329565b600091825260209091206001600590920201015460ff1614155b156126d5576040516357aeb86360e11b815260040160405180910390fd5b81546126e390600190613492565b8110156127a557815482906126fa90600190613492565b8154811061270a5761270a613329565b906000526020600020906005020182828154811061272a5761272a613329565b600091825260209091206005909102018061274583826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546127749284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101555b818054806127b5576127b56136c6565b600082815260208120600019909201916005830201906127d58282612d27565b60018201805460ff191690556127ef600283016000612d61565b506003810180546001600160a01b031916905560006004909101559055610658565b8061281b81613355565b915050612583565b600080805b600854811015612a9957600854811080156128f457506128f46008828154811061285457612854613329565b906000526020600020906005020160000180546128709061336e565b80601f016020809104026020016040519081016040528092919081815260200182805461289c9061336e565b80156128e95780601f106128be576101008083540402835291602001916128e9565b820191906000526020600020905b8154815290600101906020018083116128cc57829003601f168201915b505050505085612b7e565b15612a87576008818154811061290c5761290c613329565b600091825260208220600590910201906129268282612d27565b60018201805460ff19169055612940600283016000612d61565b506003810180546001600160a01b031916905560006004909101556008805461296b90600190613492565b8154811061297b5761297b613329565b90600052602060002090600502016008828154811061299c5761299c613329565b60009182526020909120600590910201806129b783826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546129e69284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101556008805480612a2757612a276136c6565b60008281526020812060001990920191600583020190612a478282612d27565b60018201805460ff19169055612a61600283016000612d61565b506003810180546001600160a01b03191690556000600490910155905560019150612a99565b80612a9181613355565b915050612828565b5092915050565b6001600160a01b0383166000908152600960205260408120905b815481101561065857612ad88282815481106125a1576125a1613329565b15612b6c57846001600160a01b0316828281548110612af957612af9613329565b60009182526020909120600360059092020101546001600160a01b0316141580612b4e57508360ff16828281548110612b3457612b34613329565b600091825260209091206001600590920201015460ff1614155b156126d55760405163b7f2d83360e01b815260040160405180910390fd5b80612b7681613355565b915050612aba565b600081604051602001612b919190613400565b6040516020818303038152906040528051906020012083604051602001612bb89190613400565b6040516020818303038152906040528051906020012014905092915050565b5080546000825560050290600052602060002090810190611b849190612d86565b6040518060a0016040528060608152602001600060ff1681526020016060815260200160006001600160a01b03168152602001600081525090565b82805482825590600052602060002090601f01602090048101928215612cc95791602002820160005b83821115612c9a57835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302612c5c565b8015612cc75782816101000a81549060ff0219169055600101602081600001049283019260010302612c9a565b505b50612cd5929150612dd6565b5090565b82805482825590600052602060002090601f01602090048101928215612cc957600052602060002091601f016020900482015b82811115612cc9578254825591600101919060010190612d0c565b508054612d339061336e565b6000825580601f10612d43575050565b601f016020900490600052602060002090810190611b849190612dd6565b50805460008255601f016020900490600052602060002090810190611b849190612dd6565b80821115612cd5576000612d9a8282612d27565b60018201805460ff19169055612db4600283016000612d61565b506003810180546001600160a01b031916905560006004820155600501612d86565b5b80821115612cd55760008155600101612dd7565b80356001600160a01b0381168114611dcd57600080fd5b600060208284031215612e1457600080fd5b612e1d82612deb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612e6357612e63612e24565b604052919050565b600082601f830112612e7c57600080fd5b813567ffffffffffffffff811115612e9657612e96612e24565b612ea9601f8201601f1916602001612e3a565b818152846020838601011115612ebe57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114611dcd57600080fd5b600082601f830112612efd57600080fd5b8135602067ffffffffffffffff821115612f1957612f19612e24565b8160051b612f28828201612e3a565b9283528481018201928281019087851115612f4257600080fd5b83870192505b84831015612f6857612f5983612edb565b82529183019190830190612f48565b979650505050505050565b60008060008060808587031215612f8957600080fd5b843567ffffffffffffffff80821115612fa157600080fd5b612fad88838901612e6b565b9550612fbb60208801612deb565b9450612fc960408801612edb565b93506060870135915080821115612fdf57600080fd5b50612fec87828801612eec565b91505092959194509250565b6000806040838503121561300b57600080fd5b61301483612deb565b915061302260208401612edb565b90509250929050565b60006020828403121561303d57600080fd5b5035919050565b60006020828403121561305657600080fd5b612e1d82612edb565b60008060006060848603121561307457600080fd5b833567ffffffffffffffff8082111561308c57600080fd5b61309887838801612e6b565b94506130a660208701612edb565b935060408601359150808211156130bc57600080fd5b506130c986828701612eec565b9150509250925092565b60005b838110156130ee5781810151838201526020016130d6565b50506000910152565b6000815180845261310f8160208601602086016130d3565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561315657815160ff1687529582019590820190600101613137565b509495945050505050565b6000815160a0845261317660a08501826130f7565b905060ff60208401511660208501526040830151848203604086015261319c8282613123565b6060858101516001600160a01b0316908701526080948501519490950193909352509192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561321a57603f19888603018452613208858351613161565b945092850192908501906001016131ec565b5092979650505050505050565b8015158114611b8457600080fd5b60006020828403121561324757600080fd5b8135612e1d81613227565b60808152600061326560808301876130f7565b60ff959095166020830152506001600160a01b03929092166040830152606090910152919050565b602081526000612e1d6020830184613161565b600080600080608085870312156132b657600080fd5b6132bf85612deb565b93506132cd60208601612edb565b92506132db60408601612deb565b91506132e960608601612edb565b905092959194509250565b60006020828403121561330657600080fd5b813567ffffffffffffffff81111561331d57600080fd5b6109f084828501612e6b565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016133675761336761333f565b5060010190565b600181811c9082168061338257607f821691505b6020821081036133a257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082840312156133d657600080fd5b8151612e1d81613227565b600060ff821660ff81036133f7576133f761333f565b60010192915050565b600082516134128184602087016130d3565b9190910192915050565b600080835461342a8161336e565b60018281168015613442576001811461345757613486565b60ff1984168752821515830287019450613486565b8760005260208060002060005b8581101561347d5781548a820152908401908201613464565b50505082870194505b50929695505050505050565b818103818111156107c6576107c661333f565b808201808211156107c6576107c661333f565b601f821115610a0457600081815260208120601f850160051c810160208610156134df5750805b601f850160051c820191505b818110156134fe578281556001016134eb565b505050505050565b815167ffffffffffffffff81111561352057613520612e24565b6135348161352e845461336e565b846134b8565b602080601f83116001811461356957600084156135515750858301515b600019600386901b1c1916600185901b1785556134fe565b600085815260208120601f198616915b8281101561359857888601518255948401946001909101908401613579565b50858210156135b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181036135d1575050565b6135db825461336e565b67ffffffffffffffff8111156135f3576135f3612e24565b6136018161352e845461336e565b6000601f821160018114613635576000831561361d5750848201545b600019600385901b1c1916600184901b178455610658565b600085815260209020601f19841690600086815260209020845b8381101561366f578286015482556001958601959091019060200161364f565b50858310156135b65793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160a01b038416815260ff83166020820152606060408201819052600090610d0390830184613123565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220c9307e3504111af512d0584b2cbf5f5a632cbc4d88ead7fd05bc3a6458988ba764736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102325760003560e01c80637594a6ed11610130578063ce7483d5116100b8578063e2b365961161007c578063e2b3659614610515578063e359a0a114610528578063e5e5f7321461053b578063f2fde38b1461054e578063fc9e80fc1461056157600080fd5b8063ce7483d5146104a4578063cf86f8e5146104c7578063d250f03a146104cf578063d827a8f4146104e2578063e02f97231461050257600080fd5b806390222aa1116100ff57806390222aa11461044e5780639618b333146104565780639f91506914610469578063ba79b77b14610489578063c08029e71461049157600080fd5b80637594a6ed146103d35780638400a189146103f35780638a72ea6a146104065780638da5cb5b1461042957600080fd5b80633a027073116101be5780635a919aeb116101825780635a919aeb146103905780635bbfbfd614610399578063619980dc146103ac5780637065cb48146103b8578063715018a6146103cb57600080fd5b80633a0270731461032f5780633e293e16146103425780633ee992ee146103555780634c7a7ad31461036a57806358e57ebb1461037d57600080fd5b806329d3f60b1161020557806329d3f60b146102985780632edb5fcf146102d55780632f54bf6e146102e8578063322fba27146103145780633808dfe71461031c57600080fd5b80630cdb311714610237578063173825d91461025d57806317a1fed91461027257806319ab453c14610285575b600080fd5b61024a610245366004612e02565b610574565b6040519081526020015b60405180910390f35b61027061026b366004612e02565b6105b9565b005b610270610280366004612f73565b61065f565b610270610293366004612e02565b6106a1565b6102c56102a6366004612e02565b6001600160a01b03166000908152600b60205260409020546005541190565b6040519015158152602001610254565b6102c56102e3366004612ff8565b61070c565b6102c56102f6366004612e02565b6001600160a01b031660009081526002602052604090205460ff1690565b6102706107cc565b61027061032a36600461302b565b61097b565b6102c561033d366004613044565b6109b0565b61027061035036600461305f565b6109f8565b61035d610a09565b60405161025491906131c5565b610270610378366004612e02565b610b9d565b61027061038b366004613235565b610c48565b61024a600d5481565b6102c56103a7366004612ff8565b610c8b565b600d54600454116102c5565b6102706103c6366004612e02565b610d0c565b610270610d83565b61024a6103e1366004612e02565b600b6020526000908152604090205481565b61035d610401366004613044565b610d97565b61041961041436600461302b565b610f3b565b6040516102549493929190613252565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610254565b60045461024a565b61035d610464366004612e02565b611013565b61047c610477366004612ff8565b6111d6565b604051610254919061328d565b60055461024a565b61027061049f3660046132a0565b6113e6565b61024a6104b2366004613044565b60ff166000908152600c602052604090205490565b600d5461024a565b600154610436906001600160a01b031681565b61024a6104f0366004613044565b600c6020526000908152604090205481565b61027061051036600461302b565b61170a565b61047c6105233660046132f4565b61173f565b61047c61053636600461302b565b611948565b61027061054936600461302b565b611ad4565b61027061055c366004612e02565b611b09565b6102c561056f366004612e02565b611b87565b60006001600160a01b03821661059d5760405163e6c4247b60e01b815260040160405180910390fd5b506001600160a01b03166000908152600b602052604090205490565b3360009081526002602052604090205460ff166105e957604051634289c49360e01b815260040160405180910390fd5b604051632dd92c6960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561064457600080fd5b505af4158015610658573d6000803e3d6000fd5b5050505050565b3360009081526002602052604090205460ff1661068f57604051634289c49360e01b815260040160405180910390fd5b61069b84848484611dd2565b50505050565b6106a9612305565b6001600160a01b0381166106d05760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091178155336000908152600260205260409020805460ff19169091179055565b60006001600160a01b0383166107355760405163e6c4247b60e01b815260040160405180910390fd5b60005b6001600160a01b0384166000908152600b60205260409020548110156107c0576001600160a01b0384166000908152600960205260409020805460ff851691908390811061078857610788613329565b600091825260209091206001600590920201015460ff16036107ae5760019150506107c6565b806107b881613355565b915050610738565b50600090505b92915050565b3360009081526002602052604090205460ff166107fc57604051634289c49360e01b815260040160405180910390fd5b60005b60085481101561093c57600960006008838154811061082057610820613329565b60009182526020808320600360059093020191909101546001600160a01b03168352820192909252604001812061085691612bd7565b6000600b60006008848154811061086f5761086f613329565b60009182526020808320600360059093020191909101546001600160a01b0316835282019290925260400181209190915560088054600a929190849081106108b9576108b9613329565b600091825260208083206001600590930201919091015460ff16835282019290925260400181206108e991612bd7565b6000600c60006008848154811061090257610902613329565b600091825260208083206001600590930201919091015460ff1683528201929092526040019020558061093481613355565b9150506107ff565b506000600d81905561095090600890612bd7565b6040517f47e81efc038e27bb296dec5d44262943d2c2bbec28f461787a9cc53885694cb090600090a1565b3360009081526002602052604090205460ff166109ab57604051634289c49360e01b815260040160405180910390fd5b600555565b6000806109bd33846111d6565b60608101519091506001600160a01b031633146109dd5750600092915050565b60006109f033858460000151600061235f565b949350505050565b610a0483338484611dd2565b505050565b60606008805480602002602001604051908101604052809291908181526020016000905b82821015610b9457838290600052602060002090600502016040518060a0016040529081600082018054610a609061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8c9061336e565b8015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610b5957602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b2a5790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610a2d565b50505050905090565b3360009081526002602052604090205460ff16610bcd57604051634289c49360e01b815260040160405180910390fd5b6001600160a01b038116610bf45760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa9060200160405180910390a150565b3360009081526002602052604090205460ff16610c7857604051634289c49360e01b815260040160405180910390fd5b6007805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610cbb57604051634289c49360e01b815260040160405180910390fd5b6000610cc784846111d6565b9050836001600160a01b031681606001516001600160a01b031614610cf05760009150506107c6565b6000610d0385858460000151600061235f565b95945050505050565b3360009081526002602052604090205460ff16610d3c57604051634289c49360e01b815260040160405180910390fd5b604051632d35e2b960e21b8152600260048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae49060440161062c565b610d8b612305565b610d9560006124d6565b565b60ff81166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f3057838290600052602060002090600502016040518060a0016040529081600082018054610dfc9061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e289061336e565b8015610e755780601f10610e4a57610100808354040283529160200191610e75565b820191906000526020600020905b815481529060010190602001808311610e5857829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610ef557602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610ec65790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610dc9565b505050509050919050565b60088181548110610f4b57600080fd5b9060005260206000209060050201600091509050806000018054610f6e9061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9a9061336e565b8015610fe75780601f10610fbc57610100808354040283529160200191610fe7565b820191906000526020600020905b815481529060010190602001808311610fca57829003601f168201915b5050505060018301546003840154600490940154929360ff909116926001600160a01b03909116915084565b60606001600160a01b03821661103c5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216600090815260096020908152604080832080548251818502810185019093528083529193909284015b82821015610f3057838290600052602060002090600502016040518060a00160405290816000820180546110a29061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546110ce9061336e565b801561111b5780601f106110f05761010080835404028352916020019161111b565b820191906000526020600020905b8154815290600101906020018083116110fe57829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561119b57602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161116c5790505b505050918352505060038201546001600160a01b0316602080830191909152600490920154604090910152908252600192909201910161106f565b6111de612bf8565b6001600160a01b0383166112055760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600960209081526040808320600b90925282205490915b818110156113dd578460ff1683828154811061124957611249613329565b600091825260209091206001600590920201015460ff16036113cb5782818154811061127757611277613329565b90600052602060002090600502016040518060a00160405290816000820180546112a09061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546112cc9061336e565b80156113195780601f106112ee57610100808354040283529160200191611319565b820191906000526020600020905b8154815290600101906020018083116112fc57829003601f168201915b5050509183525050600182015460ff16602080830191909152600283018054604080518285028101850182528281529401939283018282801561139957602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161136a5790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015293506107c692505050565b806113d581613355565b91505061122b565b50610d03612526565b60006113f283836111d6565b9050826001600160a01b031681606001516001600160a01b03161461142a57604051631ded229360e11b815260040160405180910390fd5b604081015180516000036114d05760015460405163117ece1960e31b81526001600160a01b0390911690638bf670c89061146a90879089906004016133a8565b6020604051808303816000875af1158015611489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ad91906133c4565b156114cb57604051631177b29560e11b815260040160405180910390fd5b611545565b6000805b82518160ff161015611524578660ff16838260ff16815181106114f9576114f9613329565b602002602001015160ff16036115125760019150611524565b8061151c816133e1565b9150506114d4565b508061154357604051630eefa23760e11b815260040160405180910390fd5b505b600061155885858560000151600161235f565b90508061157857604051631b44035160e01b815260040160405180910390fd5b60015460405163568b427d60e11b81526001600160a01b03898116600483015260ff808a1660248401528882166044840152871660648301529091169063ad1684fa90608401600060405180830381600087803b1580156115d857600080fd5b505af11580156115ec573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c89150611622908a9088906004016133a8565b6020604051808303816000875af1158015611641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166591906133c4565b15806116e3575060015460405163117ece1960e31b81526001600160a01b0390911690638bf670c89061169e9088908a906004016133a8565b6020604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e191906133c4565b155b156117015760405163fc9716b960e01b815260040160405180910390fd5b50505050505050565b3360009081526002602052604090205460ff1661173a57604051634289c49360e01b815260040160405180910390fd5b600655565b611747612bf8565b60005b60085481101561193f57826040516020016117659190613400565b604051602081830303815290604052805190602001206008828154811061178e5761178e613329565b90600052602060002090600502016000016040516020016117af919061341c565b604051602081830303815290604052805190602001200361192d57600881815481106117dd576117dd613329565b90600052602060002090600502016040518060a00160405290816000820180546118069061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546118329061336e565b801561187f5780601f106118545761010080835404028352916020019161187f565b820191906000526020600020905b81548152906001019060200180831161186257829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156118ff57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116118d05790505b505050918352505060038201546001600160a01b031660208201526004909101546040909101529392505050565b8061193781613355565b91505061174a565b506107c6612526565b611950612bf8565b600854821061197257604051635129cab160e11b815260040160405180910390fd5b6008828154811061198557611985613329565b90600052602060002090600502016040518060a00160405290816000820180546119ae9061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546119da9061336e565b8015611a275780601f106119fc57610100808354040283529160200191611a27565b820191906000526020600020905b815481529060010190602001808311611a0a57829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611aa757602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611a785790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015292915050565b3360009081526002602052604090205460ff16611b0457604051634289c49360e01b815260040160405180910390fd5b600455565b611b11612305565b6001600160a01b038116611b7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b611b84816124d6565b50565b6001546000906001600160a01b03163314611bb55760405163a71ed6c760e01b815260040160405180910390fd5b6001600160a01b038216611bdc5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600960209081526040808320600b90925282205490915b81811015611d55576000838281548110611c1e57611c1e613329565b90600052602060002090600502016000018054611c3a9061336e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c669061336e565b8015611cb35780601f10611c8857610100808354040283529160200191611cb3565b820191906000526020600020905b815481529060010190602001808311611c9657829003601f168201915b505050505090506000848381548110611cce57611cce613329565b600091825260209091206001600590920201015460ff169050611cf287828461256f565b611cfb82612823565b5060ff81166000908152600c60205260408120805460019290611d1f908490613492565b925050819055506001600d6000828254611d399190613492565b9250508190555050508080611d4d90613355565b915050611c02565b506001600160a01b0384166000908152600960205260408120611d7791612bd7565b6001600160a01b0384166000818152600b602090815260408083209290925590519182527f65419c67e554142d50c59abd004485123ca498611a223f842e75dd96225ba4c8910160405180910390a16001925050505b919050565b6001546001600160a01b0316611dfb5760405163cfdf350560e01b815260040160405180910390fd5b6005546001600160a01b0384166000908152600b602052604090205410611e355760405163182a7d7760e01b815260040160405180910390fd5b600454600d5410611e595760405163182a7d7760e01b815260040160405180910390fd5b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c890611e8c90879087906004016133a8565b6020604051808303816000875af1158015611eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ecf91906133c4565b905080611eef5760405163142d47a160e11b815260040160405180910390fd5b60005b82518160ff161015611f52578360ff16838260ff1681518110611f1757611f17613329565b602002602001015160ff1603611f4057604051630d1ecf1760e11b815260040160405180910390fd5b80611f4a816133e1565b915050611ef2565b506000611f5f85856111d6565b60608101519091506001600160a01b031615611f8e5760405163eeee5c8b60e01b815260040160405180910390fd5b6001600160a01b0385166000908152600b60205260408120805460019290611fb79084906134a5565b909155505060ff84166000908152600c60205260408120805460019290611fdf9084906134a5565b925050819055506001600d6000828254611ff991906134a5565b90915550506040805160a08101825287815260ff861660208201529081018490526001600160a01b038616606082015242608082015260088054600181018255600091909152815160059091027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3019081906120759082613506565b5060208281015160018301805460ff191660ff909216919091179055604083015180516120a89260028501920190612c33565b5060608201516003820180546001600160a01b0319166001600160a01b0392831617905560809092015160049091015585166000908152600960205260409020600880546120f890600190613492565b8154811061210857612108613329565b600091825260208083208454600181018655948452922060059182029092019202018061213583826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546121649284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560ff84166000908152600a60205260409020600880546121b690600190613492565b815481106121c6576121c6613329565b60009182526020808320845460018101865594845292206005918202909201920201806121f383826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546122229284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560075460ff16156122c257600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac9061228f90889088906004016133a8565b600060405180830381600087803b1580156122a957600080fd5b505af11580156122bd573d6000803e3d6000fd5b505050505b7fed750964f1f81f105e56dfd1121427e0898e7bc23d6c10e92d851a2d35e0cfc58585856040516122f593929190613699565b60405180910390a1505050505050565b6000546001600160a01b03163314610d955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611b72565b60006001600160a01b0385166123885760405163e6c4247b60e01b815260040160405180910390fd5b612393858585612aa0565b61239e85858561256f565b6123a783612823565b506001600160a01b0385166000908152600b602052604081208054600192906123d1908490613492565b909155505060ff84166000908152600c602052604081208054600192906123f9908490613492565b925050819055506001600d60008282546124139190613492565b909155505060075460ff168015612428575081155b1561249257600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f929061245f90889088906004016133a8565b600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f585856040516124c39291906133a8565b60405180910390a1506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61252e612bf8565b506040805160c081018252600060a0820181815282526020808301829052835182815290810184529282019290925260608101829052608081019190915290565b60ff82166000908152600a60205260408120905b8154811015610658576126418282815481106125a1576125a1613329565b906000526020600020906005020160000180546125bd9061336e565b80601f01602080910402602001604051908101604052809291908181526020018280546125e99061336e565b80156126365780601f1061260b57610100808354040283529160200191612636565b820191906000526020600020905b81548152906001019060200180831161261957829003601f168201915b505050505084612b7e565b1561281157846001600160a01b031682828154811061266257612662613329565b60009182526020909120600360059092020101546001600160a01b03161415806126b757508360ff1682828154811061269d5761269d613329565b600091825260209091206001600590920201015460ff1614155b156126d5576040516357aeb86360e11b815260040160405180910390fd5b81546126e390600190613492565b8110156127a557815482906126fa90600190613492565b8154811061270a5761270a613329565b906000526020600020906005020182828154811061272a5761272a613329565b600091825260209091206005909102018061274583826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546127749284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101555b818054806127b5576127b56136c6565b600082815260208120600019909201916005830201906127d58282612d27565b60018201805460ff191690556127ef600283016000612d61565b506003810180546001600160a01b031916905560006004909101559055610658565b8061281b81613355565b915050612583565b600080805b600854811015612a9957600854811080156128f457506128f46008828154811061285457612854613329565b906000526020600020906005020160000180546128709061336e565b80601f016020809104026020016040519081016040528092919081815260200182805461289c9061336e565b80156128e95780601f106128be576101008083540402835291602001916128e9565b820191906000526020600020905b8154815290600101906020018083116128cc57829003601f168201915b505050505085612b7e565b15612a87576008818154811061290c5761290c613329565b600091825260208220600590910201906129268282612d27565b60018201805460ff19169055612940600283016000612d61565b506003810180546001600160a01b031916905560006004909101556008805461296b90600190613492565b8154811061297b5761297b613329565b90600052602060002090600502016008828154811061299c5761299c613329565b60009182526020909120600590910201806129b783826135c6565b50600182810154908201805460ff191660ff909216919091179055600280830180546129e69284019190612cd9565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101556008805480612a2757612a276136c6565b60008281526020812060001990920191600583020190612a478282612d27565b60018201805460ff19169055612a61600283016000612d61565b506003810180546001600160a01b03191690556000600490910155905560019150612a99565b80612a9181613355565b915050612828565b5092915050565b6001600160a01b0383166000908152600960205260408120905b815481101561065857612ad88282815481106125a1576125a1613329565b15612b6c57846001600160a01b0316828281548110612af957612af9613329565b60009182526020909120600360059092020101546001600160a01b0316141580612b4e57508360ff16828281548110612b3457612b34613329565b600091825260209091206001600590920201015460ff1614155b156126d55760405163b7f2d83360e01b815260040160405180910390fd5b80612b7681613355565b915050612aba565b600081604051602001612b919190613400565b6040516020818303038152906040528051906020012083604051602001612bb89190613400565b6040516020818303038152906040528051906020012014905092915050565b5080546000825560050290600052602060002090810190611b849190612d86565b6040518060a0016040528060608152602001600060ff1681526020016060815260200160006001600160a01b03168152602001600081525090565b82805482825590600052602060002090601f01602090048101928215612cc95791602002820160005b83821115612c9a57835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302612c5c565b8015612cc75782816101000a81549060ff0219169055600101602081600001049283019260010302612c9a565b505b50612cd5929150612dd6565b5090565b82805482825590600052602060002090601f01602090048101928215612cc957600052602060002091601f016020900482015b82811115612cc9578254825591600101919060010190612d0c565b508054612d339061336e565b6000825580601f10612d43575050565b601f016020900490600052602060002090810190611b849190612dd6565b50805460008255601f016020900490600052602060002090810190611b849190612dd6565b80821115612cd5576000612d9a8282612d27565b60018201805460ff19169055612db4600283016000612d61565b506003810180546001600160a01b031916905560006004820155600501612d86565b5b80821115612cd55760008155600101612dd7565b80356001600160a01b0381168114611dcd57600080fd5b600060208284031215612e1457600080fd5b612e1d82612deb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612e6357612e63612e24565b604052919050565b600082601f830112612e7c57600080fd5b813567ffffffffffffffff811115612e9657612e96612e24565b612ea9601f8201601f1916602001612e3a565b818152846020838601011115612ebe57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114611dcd57600080fd5b600082601f830112612efd57600080fd5b8135602067ffffffffffffffff821115612f1957612f19612e24565b8160051b612f28828201612e3a565b9283528481018201928281019087851115612f4257600080fd5b83870192505b84831015612f6857612f5983612edb565b82529183019190830190612f48565b979650505050505050565b60008060008060808587031215612f8957600080fd5b843567ffffffffffffffff80821115612fa157600080fd5b612fad88838901612e6b565b9550612fbb60208801612deb565b9450612fc960408801612edb565b93506060870135915080821115612fdf57600080fd5b50612fec87828801612eec565b91505092959194509250565b6000806040838503121561300b57600080fd5b61301483612deb565b915061302260208401612edb565b90509250929050565b60006020828403121561303d57600080fd5b5035919050565b60006020828403121561305657600080fd5b612e1d82612edb565b60008060006060848603121561307457600080fd5b833567ffffffffffffffff8082111561308c57600080fd5b61309887838801612e6b565b94506130a660208701612edb565b935060408601359150808211156130bc57600080fd5b506130c986828701612eec565b9150509250925092565b60005b838110156130ee5781810151838201526020016130d6565b50506000910152565b6000815180845261310f8160208601602086016130d3565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561315657815160ff1687529582019590820190600101613137565b509495945050505050565b6000815160a0845261317660a08501826130f7565b905060ff60208401511660208501526040830151848203604086015261319c8282613123565b6060858101516001600160a01b0316908701526080948501519490950193909352509192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561321a57603f19888603018452613208858351613161565b945092850192908501906001016131ec565b5092979650505050505050565b8015158114611b8457600080fd5b60006020828403121561324757600080fd5b8135612e1d81613227565b60808152600061326560808301876130f7565b60ff959095166020830152506001600160a01b03929092166040830152606090910152919050565b602081526000612e1d6020830184613161565b600080600080608085870312156132b657600080fd5b6132bf85612deb565b93506132cd60208601612edb565b92506132db60408601612deb565b91506132e960608601612edb565b905092959194509250565b60006020828403121561330657600080fd5b813567ffffffffffffffff81111561331d57600080fd5b6109f084828501612e6b565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016133675761336761333f565b5060010190565b600181811c9082168061338257607f821691505b6020821081036133a257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082840312156133d657600080fd5b8151612e1d81613227565b600060ff821660ff81036133f7576133f761333f565b60010192915050565b600082516134128184602087016130d3565b9190910192915050565b600080835461342a8161336e565b60018281168015613442576001811461345757613486565b60ff1984168752821515830287019450613486565b8760005260208060002060005b8581101561347d5781548a820152908401908201613464565b50505082870194505b50929695505050505050565b818103818111156107c6576107c661333f565b808201808211156107c6576107c661333f565b601f821115610a0457600081815260208120601f850160051c810160208610156134df5750805b601f850160051c820191505b818110156134fe578281556001016134eb565b505050505050565b815167ffffffffffffffff81111561352057613520612e24565b6135348161352e845461336e565b846134b8565b602080601f83116001811461356957600084156135515750858301515b600019600386901b1c1916600185901b1785556134fe565b600085815260208120601f198616915b8281101561359857888601518255948401946001909101908401613579565b50858210156135b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181036135d1575050565b6135db825461336e565b67ffffffffffffffff8111156135f3576135f3612e24565b6136018161352e845461336e565b6000601f821160018114613635576000831561361d5750848201545b600019600385901b1c1916600184901b178455610658565b600085815260209020601f19841690600086815260209020845b8381101561366f578286015482556001958601959091019060200161364f565b50858310156135b65793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160a01b038416815260ff83166020820152606060408201819052600090610d0390830184613123565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220c9307e3504111af512d0584b2cbf5f5a632cbc4d88ead7fd05bc3a6458988ba764736f6c63430008140033", + "linkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 1706 + }, + { + "length": 20, + "start": 3581 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 1550 + }, + { + "length": 20, + "start": 3425 + } + ] + } + } +} diff --git a/src/context/abis/GammaPacks.v3.sol/IGammaCardsContract.json b/src/context/abis/gamma/GammaPacks.v3.sol/IGammaCardsContract.json similarity index 100% rename from src/context/abis/GammaPacks.v3.sol/IGammaCardsContract.json rename to src/context/abis/gamma/GammaPacks.v3.sol/IGammaCardsContract.json diff --git a/src/context/abis/GammaPacks.v3.sol/IgammaTicketsContract.json b/src/context/abis/gamma/GammaPacks.v3.sol/IgammaTicketsContract.json similarity index 100% rename from src/context/abis/GammaPacks.v3.sol/IgammaTicketsContract.json rename to src/context/abis/gamma/GammaPacks.v3.sol/IgammaTicketsContract.json diff --git a/src/context/abis/gamma/GammaPacks.v3.sol/NofGammaPacksV3.json b/src/context/abis/gamma/GammaPacks.v3.sol/NofGammaPacksV3.json new file mode 100644 index 00000000..369c561f --- /dev/null +++ b/src/context/abis/gamma/GammaPacks.v3.sol/NofGammaPacksV3.json @@ -0,0 +1,855 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NofGammaPacksV3", + "sourceName": "contracts/gamma/GammaPacks.v3.sol", + "abi": [ + { + "inputs": [], + "name": "InsufficientAllowance", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientPacksAvailable", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidNumberOfPacks", + "type": "error" + }, + { + "inputs": [], + "name": "NotGammaCardsContract", + "type": "error" + }, + { + "inputs": [], + "name": "NotYourPack", + "type": "error" + }, + { + "inputs": [], + "name": "OwnlyOwners", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferPrizeError", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "balanceReceiver", + "type": "address" + } + ], + "name": "NewBalanceReceiver", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newCardsContract", + "type": "address" + } + ], + "name": "NewGammaCardsContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newGammaTicketContract", + "type": "address" + } + ], + "name": "NewGammaTicketsContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "newPrice", + "type": "uint256" + } + ], + "name": "NewPrice", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "PackOpened", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "PackPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "PackTransfered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "PacksPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256[]", + "name": "tokenId", + "type": "uint256[]" + } + ], + "name": "PacksTransfered", + "type": "event" + }, + { + "inputs": [], + "name": "DAI_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TOTALSUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyPack", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "buyPackByUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numberOfPacks", + "type": "uint256" + } + ], + "name": "buyPacks", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "numberOfPacks", + "type": "uint256" + } + ], + "name": "buyPacksByUser", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newBalanceReceiver", + "type": "address" + } + ], + "name": "changeBalanceReceiver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newPrice", + "type": "uint256" + } + ], + "name": "changePrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_transferDai", + "type": "bool" + } + ], + "name": "changeTransferDaiFlag", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gammaCardsContract", + "outputs": [ + { + "internalType": "contract IGammaCardsContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gammaTicketsContract", + "outputs": [ + { + "internalType": "contract IgammaTicketsContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numberOfPacks", + "type": "uint256" + } + ], + "name": "getAmountRequiredToBuyPacks", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getPackOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "getPacksByUser", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numberOfPacks", + "type": "uint256" + } + ], + "name": "getPrizeAmountToBuyPacks", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numberOfPacks", + "type": "uint256" + } + ], + "name": "getPrizeNoFAccountAmountToBuyPacks", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_daiTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_balanceReceiver", + "type": "address" + }, + { + "internalType": "address", + "name": "_gammaCardsContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_gammaTicketsContract", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numberOfPacks", + "type": "uint256" + } + ], + "name": "meetQuantityConditionsToBuy", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "openPack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "openPacks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ownerToRemove", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "s_balanceReceiver", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "s_packPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "s_packs", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "s_packsByUser", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenIds", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaCardsContract", + "type": "address" + } + ], + "name": "setGammaCardsContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaTicketsContract", + "type": "address" + } + ], + "name": "setGammaTicketsContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "testOpenPack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "testOpenPacks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferPack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "transferPacks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526710a741a46278000060075560006008556009805460ff1916600117905534801561002e57600080fd5b506100383361003d565b61008d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611bde8061009c6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806394a08c6911610125578063d250f03a116100ad578063d9e8221e1161007c578063d9e8221e146104d1578063ddb975e8146104e4578063e0f78307146104f7578063e606df871461050a578063f2fde38b1461051d57600080fd5b8063d250f03a1461046f578063d3e6a7ad14610482578063d611713e146104ab578063d6a4c3e4146104be57600080fd5b8063a2b40d19116100f4578063a2b40d191461041b578063ab4bdbc81461042e578063b48ce65314610441578063c34e8af414610454578063c37b9bcd1461046757600080fd5b806394a08c69146103d9578063967ed63d146103e257806397f8b3d3146103f557806399e5f8961461040857600080fd5b80634c7a7ad3116101a85780637065cb48116101775780637065cb4814610387578063715018a61461039a57806380f2540b146103a25780638da5cb5b146103b55780638fd5baf7146103c657600080fd5b80634c7a7ad31461033857806362e218781461034b578063656bd0ad1461036b5780636adbaf751461037457600080fd5b8063173825d9116101ef578063173825d91461029a5780632f54bf6e146102ad57806339e8d3ec146102e95780633cd626fd146102fc5780633f6ecd481461032557600080fd5b806301321c4d1461022157806306552ff3146102475780630c3e5c001461025c57806314cca36a1461026f575b600080fd5b61023461022f3660046117da565b610530565b6040519081526020015b60405180910390f35b61025a61025536600461180a565b61055e565b005b61025a61026a36600461190f565b61061c565b600254610282906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b61025a6102a836600461195d565b610698565b6102d96102bb36600461195d565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161023e565b61025a6102f7366004611978565b61073e565b61028261030a3660046117da565b600a602052600090815260409020546001600160a01b031681565b6102346103333660046117da565b61077c565b61025a61034636600461195d565b6107ab565b61035e61035936600461199b565b61084c565b60405161023e91906119c5565b61023460075481565b61035e6103823660046117da565b610889565b61025a61039536600461195d565b610895565b61025a61090c565b61025a6103b0366004611978565b610920565b6000546001600160a01b0316610282565b61035e6103d436600461195d565b61094b565b61023461c35081565b6102346103f036600461195d565b6109b7565b61025a61040336600461190f565b6109f5565b61025a610416366004611a17565b610a67565b61025a6104293660046117da565b610aaa565b61025a61043c366004611a34565b610b6b565b61023461044f3660046117da565b610c02565b600654610282906001600160a01b031681565b610234610c2f565b600154610282906001600160a01b031681565b6102826104903660046117da565b6000908152600a60205260409020546001600160a01b031690565b61025a6104b936600461199b565b610c3f565b6102d96104cc3660046117da565b610c49565b6102346104df36600461199b565b610c84565b61025a6104f236600461195d565b610cb5565b61025a61050536600461195d565b610d56565b600554610282906001600160a01b031681565b61025a61052b36600461195d565b610df7565b60008061053c8361077c565b9050808360075461054d9190611a98565b6105579190611aaf565b9392505050565b610566610e75565b6001600160a01b038316158061058357506001600160a01b038216155b8061059557506001600160a01b038116155b156105b35760405163e6c4247b60e01b815260040160405180910390fd5b600580546001600160a01b03199081166001600160a01b039687161790915560068054821694861694909417909355600180548416928516929092178255600280549093169316929092179055336000908152600360205260409020805460ff19169091179055565b3360009081526003602052604090205460ff1661064c57604051631833a1e960e31b815260040160405180910390fd5b60005b825181101561069357600083828151811061066c5761066c611ac2565b602002602001015190506106808184610ecf565b508061068b81611ad8565b91505061064f565b505050565b3360009081526003602052604090205460ff166106c857604051631833a1e960e31b815260040160405180910390fd5b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561072357600080fd5b505af4158015610737573d6000803e3d6000fd5b5050505050565b3360009081526003602052604090205460ff1661076e57604051631833a1e960e31b815260040160405180910390fd5b6107788282610ecf565b5050565b600081600660075461078e9190611af1565b60075461079b9190611aaf565b6107a59190611a98565b92915050565b3360009081526003602052604090205460ff166107db57604051631833a1e960e31b815260040160405180910390fd5b6001600160a01b0381166108025760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa90600090a250565b3360009081526003602052604090205460609060ff1661087f57604051631833a1e960e31b815260040160405180910390fd5b6105578383610f2c565b60606107a53383610f2c565b3360009081526003602052604090205460ff166108c557604051631833a1e960e31b815260040160405180910390fd5b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae49060440161070b565b610914610e75565b61091e6000611192565b565b6001546001600160a01b0316331461076e57604051630f8d39bd60e41b815260040160405180910390fd5b6001600160a01b0381166000908152600b60209081526040918290208054835181840281018401909452808452606093928301828280156109ab57602002820191906000526020600020905b815481526020019060010190808311610997575b50505050509050919050565b3360009081526003602052604081205460ff166109e757604051631833a1e960e31b815260040160405180910390fd5b6107a5826111e2565b919050565b6001546001600160a01b03163314610a2057604051630f8d39bd60e41b815260040160405180910390fd5b60005b8251811015610693576000838281518110610a4057610a40611ac2565b60200260200101519050610a548184610ecf565b5080610a5f81611ad8565b915050610a23565b3360009081526003602052604090205460ff16610a9757604051631833a1e960e31b815260040160405180910390fd5b6009805460ff1916911515919091179055565b3360009081526003602052604090205460ff16610ada57604051631833a1e960e31b815260040160405180910390fd5b60078190556001546040516370c41e3760e11b8152600481018390526001600160a01b039091169063e1883c6e90602401600060405180830381600087803b158015610b2557600080fd5b505af1158015610b39573d6000803e3d6000fd5b50506040518392507f270b316b51ab2cf3a3bb8ca4d22e76a327d05e762fcaa8bd6afaf8cfde9270b79150600090a250565b60005b8151811015610bb2576000828281518110610b8b57610b8b611ac2565b60200260200101519050610b9f8482611215565b5080610baa81611ad8565b915050610b6e565b5080604051610bc19190611b13565b604051908190038120906001600160a01b0384169033907f1affae2fd35738ec8f6a4212f337c673b41aa2231f1bd5cfeb94463a93ace1f190600090a45050565b600080610c0e8361077c565b90506000610c1b84610530565b9050610c278183611b49565b949350505050565b6000610c3a336111e2565b905090565b6107788282611215565b600081600003610c6c57604051632ec760a560e01b815260040160405180910390fd5b61c35082600854610c7d9190611b49565b1092915050565b600b6020528160005260406000208181548110610ca057600080fd5b90600052602060002001600091509150505481565b3360009081526003602052604090205460ff16610ce557604051631833a1e960e31b815260040160405180910390fd5b6001600160a01b038116610d0c5760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa20290600090a250565b3360009081526003602052604090205460ff16610d8657604051631833a1e960e31b815260040160405180910390fd5b6001600160a01b038116610dad5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f7161c7a7090d78e8031fca87e845a86b39e0eb9c15436933d2d4ce7f4520c4a590600090a250565b610dff610e75565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610e7281611192565b50565b6000546001600160a01b0316331461091e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e60565b610ed98282611301565b6000828152600a602052604080822080546001600160a01b03191690555183916001600160a01b038416917f459bdaa71b6c253b49d34a7622dc4c6c1c416c0567571c068b392ba7172ddd4c9190a35050565b60606001600160a01b038316610f555760405163e6c4247b60e01b815260040160405180910390fd5b811580610f625750606482115b15610f8057604051632ec760a560e01b815260040160405180910390fd5b61c35082600854610f919190611b49565b10610faf57604051637c5a3c3960e01b815260040160405180910390fd5b60008267ffffffffffffffff811115610fca57610fca61185e565b604051908082528060200260200182016040528015610ff3578160200160208202803683370190505b5060085490915060005b848110156110a35761c350821061102757604051637c5a3c3960e01b815260040160405180910390fd5b6000828152600a6020908152604080832080546001600160a01b0319166001600160a01b038b169081179091558352600b8252822080546001810182559083529120018290558251829084908390811061108357611083611ac2565b60209081029190910101528161109881611ad8565b925050600101610ffd565b50600881905560006110b58686611440565b9050806110e057604051630bd7e48f60e21b81526001600160a01b0387166004820152602401610e60565b8460010361113e57826000815181106110fb576110fb611ac2565b6020026020010151866001600160a01b03167fc79cad949a408373456da7a9e88e8114102aa00e03a69733c70e3a0d95944ca760405160405180910390a3611188565b8260405161114c9190611b13565b604051908190038120906001600160a01b038816907f8ae8b18ed6d499ec84f68235bf3512b3db155f7911789805d36093467e5971c990600090a35b5090949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806111f0836001610f2c565b90508060008151811061120557611205611ac2565b6020026020010151915050919050565b6001600160a01b03821661123c5760405163e6c4247b60e01b815260040160405180910390fd5b6000818152600a60205260409020546001600160a01b0316331461127357604051637f6ecdf560e01b815260040160405180910390fd5b6000818152600a6020526040902080546001600160a01b0319166001600160a01b0384161790556112a48133611301565b6001600160a01b0382166000818152600b6020908152604080832080546001810182559084529183209091018490555183929133917f16e5698e3d85c69c8d8cdb9a21893b33518e24d8cb69d9944d4bfd233464c3a29190a45050565b6001600160a01b0381166000908152600b6020526040812054905b8181101561143a576001600160a01b0383166000908152600b6020526040902080548591908390811061135157611351611ac2565b906000526020600020015403611428576001600160a01b0383166000908152600b60205260409020805461138790600190611aaf565b8154811061139757611397611ac2565b9060005260206000200154600b6000856001600160a01b03166001600160a01b0316815260200190815260200160002082815481106113d8576113d8611ac2565b60009182526020808320909101929092556001600160a01b0385168152600b9091526040902080548061140d5761140d611b5c565b6001900381819060005260206000200160009055905561143a565b8061143281611ad8565b91505061131c565b50505050565b60008061144c8361077c565b9050600061145984610530565b600154604051630bc639c960e31b8152600481018590529192506001600160a01b031690635e31ce4890602401600060405180830381600087803b1580156114a057600080fd5b505af11580156114b4573d6000803e3d6000fd5b505060095460ff161591506117cf9050576005546001600160a01b03166114db8284611b49565b604051636eb1769f60e11b81526001600160a01b03888116600483015230602483015283169063dd62ed3e90604401602060405180830381865afa158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190611b72565b101561156a576040516313be252b60e01b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0387811660048301528491908316906370a0823190602401602060405180830381865afa1580156115b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d79190611b72565b108061164d57506040516370a0823160e01b81526001600160a01b0387811660048301528391908316906370a0823190602401602060405180830381865afa158015611627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164b9190611b72565b105b1561166b57604051631e9acf1760e31b815260040160405180910390fd5b6001546040516323b872dd60e01b81526001600160a01b0388811660048301529182166024820152604481018590526000918316906323b872dd906064016020604051808303816000875af11580156116c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ec9190611b8b565b90508061171b57600154604051630bd7e48f60e21b81526001600160a01b039091166004820152602401610e60565b6006546040516323b872dd60e01b81526001600160a01b0389811660048301529182166024820152604481018590526000918416906323b872dd906064016020604051808303816000875af1158015611778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179c9190611b8b565b9050806117cb57600654604051630bd7e48f60e21b81526001600160a01b039091166004820152602401610e60565b5050505b506001949350505050565b6000602082840312156117ec57600080fd5b5035919050565b80356001600160a01b03811681146109f057600080fd5b6000806000806080858703121561182057600080fd5b611829856117f3565b9350611837602086016117f3565b9250611845604086016117f3565b9150611853606086016117f3565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261188557600080fd5b8135602067ffffffffffffffff808311156118a2576118a261185e565b8260051b604051601f19603f830116810181811084821117156118c7576118c761185e565b6040529384528581018301938381019250878511156118e557600080fd5b83870191505b84821015611904578135835291830191908301906118eb565b979650505050505050565b6000806040838503121561192257600080fd5b823567ffffffffffffffff81111561193957600080fd5b61194585828601611874565b925050611954602084016117f3565b90509250929050565b60006020828403121561196f57600080fd5b610557826117f3565b6000806040838503121561198b57600080fd5b82359150611954602084016117f3565b600080604083850312156119ae57600080fd5b6119b7836117f3565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156119fd578351835292840192918401916001016119e1565b50909695505050505050565b8015158114610e7257600080fd5b600060208284031215611a2957600080fd5b813561055781611a09565b60008060408385031215611a4757600080fd5b611a50836117f3565b9150602083013567ffffffffffffffff811115611a6c57600080fd5b611a7885828601611874565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107a5576107a5611a82565b818103818111156107a5576107a5611a82565b634e487b7160e01b600052603260045260246000fd5b600060018201611aea57611aea611a82565b5060010190565b600082611b0e57634e487b7160e01b600052601260045260246000fd5b500490565b815160009082906020808601845b83811015611b3d57815185529382019390820190600101611b21565b50929695505050505050565b808201808211156107a5576107a5611a82565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611b8457600080fd5b5051919050565b600060208284031215611b9d57600080fd5b815161055781611a0956fea2646970667358221220fd54fd5d99679dd24123986c2b3fe3d53c16d5b0be561d77ba62c9b5e4a6b5b064736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061021c5760003560e01c806394a08c6911610125578063d250f03a116100ad578063d9e8221e1161007c578063d9e8221e146104d1578063ddb975e8146104e4578063e0f78307146104f7578063e606df871461050a578063f2fde38b1461051d57600080fd5b8063d250f03a1461046f578063d3e6a7ad14610482578063d611713e146104ab578063d6a4c3e4146104be57600080fd5b8063a2b40d19116100f4578063a2b40d191461041b578063ab4bdbc81461042e578063b48ce65314610441578063c34e8af414610454578063c37b9bcd1461046757600080fd5b806394a08c69146103d9578063967ed63d146103e257806397f8b3d3146103f557806399e5f8961461040857600080fd5b80634c7a7ad3116101a85780637065cb48116101775780637065cb4814610387578063715018a61461039a57806380f2540b146103a25780638da5cb5b146103b55780638fd5baf7146103c657600080fd5b80634c7a7ad31461033857806362e218781461034b578063656bd0ad1461036b5780636adbaf751461037457600080fd5b8063173825d9116101ef578063173825d91461029a5780632f54bf6e146102ad57806339e8d3ec146102e95780633cd626fd146102fc5780633f6ecd481461032557600080fd5b806301321c4d1461022157806306552ff3146102475780630c3e5c001461025c57806314cca36a1461026f575b600080fd5b61023461022f3660046117da565b610530565b6040519081526020015b60405180910390f35b61025a61025536600461180a565b61055e565b005b61025a61026a36600461190f565b61061c565b600254610282906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b61025a6102a836600461195d565b610698565b6102d96102bb36600461195d565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161023e565b61025a6102f7366004611978565b61073e565b61028261030a3660046117da565b600a602052600090815260409020546001600160a01b031681565b6102346103333660046117da565b61077c565b61025a61034636600461195d565b6107ab565b61035e61035936600461199b565b61084c565b60405161023e91906119c5565b61023460075481565b61035e6103823660046117da565b610889565b61025a61039536600461195d565b610895565b61025a61090c565b61025a6103b0366004611978565b610920565b6000546001600160a01b0316610282565b61035e6103d436600461195d565b61094b565b61023461c35081565b6102346103f036600461195d565b6109b7565b61025a61040336600461190f565b6109f5565b61025a610416366004611a17565b610a67565b61025a6104293660046117da565b610aaa565b61025a61043c366004611a34565b610b6b565b61023461044f3660046117da565b610c02565b600654610282906001600160a01b031681565b610234610c2f565b600154610282906001600160a01b031681565b6102826104903660046117da565b6000908152600a60205260409020546001600160a01b031690565b61025a6104b936600461199b565b610c3f565b6102d96104cc3660046117da565b610c49565b6102346104df36600461199b565b610c84565b61025a6104f236600461195d565b610cb5565b61025a61050536600461195d565b610d56565b600554610282906001600160a01b031681565b61025a61052b36600461195d565b610df7565b60008061053c8361077c565b9050808360075461054d9190611a98565b6105579190611aaf565b9392505050565b610566610e75565b6001600160a01b038316158061058357506001600160a01b038216155b8061059557506001600160a01b038116155b156105b35760405163e6c4247b60e01b815260040160405180910390fd5b600580546001600160a01b03199081166001600160a01b039687161790915560068054821694861694909417909355600180548416928516929092178255600280549093169316929092179055336000908152600360205260409020805460ff19169091179055565b3360009081526003602052604090205460ff1661064c57604051631833a1e960e31b815260040160405180910390fd5b60005b825181101561069357600083828151811061066c5761066c611ac2565b602002602001015190506106808184610ecf565b508061068b81611ad8565b91505061064f565b505050565b3360009081526003602052604090205460ff166106c857604051631833a1e960e31b815260040160405180910390fd5b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b15801561072357600080fd5b505af4158015610737573d6000803e3d6000fd5b5050505050565b3360009081526003602052604090205460ff1661076e57604051631833a1e960e31b815260040160405180910390fd5b6107788282610ecf565b5050565b600081600660075461078e9190611af1565b60075461079b9190611aaf565b6107a59190611a98565b92915050565b3360009081526003602052604090205460ff166107db57604051631833a1e960e31b815260040160405180910390fd5b6001600160a01b0381166108025760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa90600090a250565b3360009081526003602052604090205460609060ff1661087f57604051631833a1e960e31b815260040160405180910390fd5b6105578383610f2c565b60606107a53383610f2c565b3360009081526003602052604090205460ff166108c557604051631833a1e960e31b815260040160405180910390fd5b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae49060440161070b565b610914610e75565b61091e6000611192565b565b6001546001600160a01b0316331461076e57604051630f8d39bd60e41b815260040160405180910390fd5b6001600160a01b0381166000908152600b60209081526040918290208054835181840281018401909452808452606093928301828280156109ab57602002820191906000526020600020905b815481526020019060010190808311610997575b50505050509050919050565b3360009081526003602052604081205460ff166109e757604051631833a1e960e31b815260040160405180910390fd5b6107a5826111e2565b919050565b6001546001600160a01b03163314610a2057604051630f8d39bd60e41b815260040160405180910390fd5b60005b8251811015610693576000838281518110610a4057610a40611ac2565b60200260200101519050610a548184610ecf565b5080610a5f81611ad8565b915050610a23565b3360009081526003602052604090205460ff16610a9757604051631833a1e960e31b815260040160405180910390fd5b6009805460ff1916911515919091179055565b3360009081526003602052604090205460ff16610ada57604051631833a1e960e31b815260040160405180910390fd5b60078190556001546040516370c41e3760e11b8152600481018390526001600160a01b039091169063e1883c6e90602401600060405180830381600087803b158015610b2557600080fd5b505af1158015610b39573d6000803e3d6000fd5b50506040518392507f270b316b51ab2cf3a3bb8ca4d22e76a327d05e762fcaa8bd6afaf8cfde9270b79150600090a250565b60005b8151811015610bb2576000828281518110610b8b57610b8b611ac2565b60200260200101519050610b9f8482611215565b5080610baa81611ad8565b915050610b6e565b5080604051610bc19190611b13565b604051908190038120906001600160a01b0384169033907f1affae2fd35738ec8f6a4212f337c673b41aa2231f1bd5cfeb94463a93ace1f190600090a45050565b600080610c0e8361077c565b90506000610c1b84610530565b9050610c278183611b49565b949350505050565b6000610c3a336111e2565b905090565b6107788282611215565b600081600003610c6c57604051632ec760a560e01b815260040160405180910390fd5b61c35082600854610c7d9190611b49565b1092915050565b600b6020528160005260406000208181548110610ca057600080fd5b90600052602060002001600091509150505481565b3360009081526003602052604090205460ff16610ce557604051631833a1e960e31b815260040160405180910390fd5b6001600160a01b038116610d0c5760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f563f24d71e856f79bec30e1aa96082a296cd13f0a71cec730a72b719fa0fa20290600090a250565b3360009081526003602052604090205460ff16610d8657604051631833a1e960e31b815260040160405180910390fd5b6001600160a01b038116610dad5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f7161c7a7090d78e8031fca87e845a86b39e0eb9c15436933d2d4ce7f4520c4a590600090a250565b610dff610e75565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610e7281611192565b50565b6000546001600160a01b0316331461091e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e60565b610ed98282611301565b6000828152600a602052604080822080546001600160a01b03191690555183916001600160a01b038416917f459bdaa71b6c253b49d34a7622dc4c6c1c416c0567571c068b392ba7172ddd4c9190a35050565b60606001600160a01b038316610f555760405163e6c4247b60e01b815260040160405180910390fd5b811580610f625750606482115b15610f8057604051632ec760a560e01b815260040160405180910390fd5b61c35082600854610f919190611b49565b10610faf57604051637c5a3c3960e01b815260040160405180910390fd5b60008267ffffffffffffffff811115610fca57610fca61185e565b604051908082528060200260200182016040528015610ff3578160200160208202803683370190505b5060085490915060005b848110156110a35761c350821061102757604051637c5a3c3960e01b815260040160405180910390fd5b6000828152600a6020908152604080832080546001600160a01b0319166001600160a01b038b169081179091558352600b8252822080546001810182559083529120018290558251829084908390811061108357611083611ac2565b60209081029190910101528161109881611ad8565b925050600101610ffd565b50600881905560006110b58686611440565b9050806110e057604051630bd7e48f60e21b81526001600160a01b0387166004820152602401610e60565b8460010361113e57826000815181106110fb576110fb611ac2565b6020026020010151866001600160a01b03167fc79cad949a408373456da7a9e88e8114102aa00e03a69733c70e3a0d95944ca760405160405180910390a3611188565b8260405161114c9190611b13565b604051908190038120906001600160a01b038816907f8ae8b18ed6d499ec84f68235bf3512b3db155f7911789805d36093467e5971c990600090a35b5090949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806111f0836001610f2c565b90508060008151811061120557611205611ac2565b6020026020010151915050919050565b6001600160a01b03821661123c5760405163e6c4247b60e01b815260040160405180910390fd5b6000818152600a60205260409020546001600160a01b0316331461127357604051637f6ecdf560e01b815260040160405180910390fd5b6000818152600a6020526040902080546001600160a01b0319166001600160a01b0384161790556112a48133611301565b6001600160a01b0382166000818152600b6020908152604080832080546001810182559084529183209091018490555183929133917f16e5698e3d85c69c8d8cdb9a21893b33518e24d8cb69d9944d4bfd233464c3a29190a45050565b6001600160a01b0381166000908152600b6020526040812054905b8181101561143a576001600160a01b0383166000908152600b6020526040902080548591908390811061135157611351611ac2565b906000526020600020015403611428576001600160a01b0383166000908152600b60205260409020805461138790600190611aaf565b8154811061139757611397611ac2565b9060005260206000200154600b6000856001600160a01b03166001600160a01b0316815260200190815260200160002082815481106113d8576113d8611ac2565b60009182526020808320909101929092556001600160a01b0385168152600b9091526040902080548061140d5761140d611b5c565b6001900381819060005260206000200160009055905561143a565b8061143281611ad8565b91505061131c565b50505050565b60008061144c8361077c565b9050600061145984610530565b600154604051630bc639c960e31b8152600481018590529192506001600160a01b031690635e31ce4890602401600060405180830381600087803b1580156114a057600080fd5b505af11580156114b4573d6000803e3d6000fd5b505060095460ff161591506117cf9050576005546001600160a01b03166114db8284611b49565b604051636eb1769f60e11b81526001600160a01b03888116600483015230602483015283169063dd62ed3e90604401602060405180830381865afa158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190611b72565b101561156a576040516313be252b60e01b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0387811660048301528491908316906370a0823190602401602060405180830381865afa1580156115b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d79190611b72565b108061164d57506040516370a0823160e01b81526001600160a01b0387811660048301528391908316906370a0823190602401602060405180830381865afa158015611627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164b9190611b72565b105b1561166b57604051631e9acf1760e31b815260040160405180910390fd5b6001546040516323b872dd60e01b81526001600160a01b0388811660048301529182166024820152604481018590526000918316906323b872dd906064016020604051808303816000875af11580156116c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ec9190611b8b565b90508061171b57600154604051630bd7e48f60e21b81526001600160a01b039091166004820152602401610e60565b6006546040516323b872dd60e01b81526001600160a01b0389811660048301529182166024820152604481018590526000918416906323b872dd906064016020604051808303816000875af1158015611778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179c9190611b8b565b9050806117cb57600654604051630bd7e48f60e21b81526001600160a01b039091166004820152602401610e60565b5050505b506001949350505050565b6000602082840312156117ec57600080fd5b5035919050565b80356001600160a01b03811681146109f057600080fd5b6000806000806080858703121561182057600080fd5b611829856117f3565b9350611837602086016117f3565b9250611845604086016117f3565b9150611853606086016117f3565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261188557600080fd5b8135602067ffffffffffffffff808311156118a2576118a261185e565b8260051b604051601f19603f830116810181811084821117156118c7576118c761185e565b6040529384528581018301938381019250878511156118e557600080fd5b83870191505b84821015611904578135835291830191908301906118eb565b979650505050505050565b6000806040838503121561192257600080fd5b823567ffffffffffffffff81111561193957600080fd5b61194585828601611874565b925050611954602084016117f3565b90509250929050565b60006020828403121561196f57600080fd5b610557826117f3565b6000806040838503121561198b57600080fd5b82359150611954602084016117f3565b600080604083850312156119ae57600080fd5b6119b7836117f3565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156119fd578351835292840192918401916001016119e1565b50909695505050505050565b8015158114610e7257600080fd5b600060208284031215611a2957600080fd5b813561055781611a09565b60008060408385031215611a4757600080fd5b611a50836117f3565b9150602083013567ffffffffffffffff811115611a6c57600080fd5b611a7885828601611874565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107a5576107a5611a82565b818103818111156107a5576107a5611a82565b634e487b7160e01b600052603260045260246000fd5b600060018201611aea57611aea611a82565b5060010190565b600082611b0e57634e487b7160e01b600052601260045260246000fd5b500490565b815160009082906020808601845b83811015611b3d57815185529382019390820190600101611b21565b50929695505050505050565b808201808211156107a5576107a5611a82565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611b8457600080fd5b5051919050565b600060208284031215611b9d57600080fd5b815161055781611a0956fea2646970667358221220fd54fd5d99679dd24123986c2b3fe3d53c16d5b0be561d77ba62c9b5e4a6b5b064736f6c63430008140033", + "linkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 1929 + }, + { + "length": 20, + "start": 2438 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 1773 + }, + { + "length": 20, + "start": 2282 + } + ] + } + } +} diff --git a/src/context/abis/GammaTickets.v1.sol/IGammaCardsContract.json b/src/context/abis/gamma/GammaTickets.v1.sol/IGammaCardsContract.json similarity index 100% rename from src/context/abis/GammaTickets.v1.sol/IGammaCardsContract.json rename to src/context/abis/gamma/GammaTickets.v1.sol/IGammaCardsContract.json diff --git a/src/context/abis/GammaTickets.v1.sol/IgammaPacksContract.json b/src/context/abis/gamma/GammaTickets.v1.sol/IgammaPacksContract.json similarity index 100% rename from src/context/abis/GammaTickets.v1.sol/IgammaPacksContract.json rename to src/context/abis/gamma/GammaTickets.v1.sol/IgammaPacksContract.json diff --git a/src/context/abis/gamma/GammaTickets.v1.sol/NofGammaTicketsV1.json b/src/context/abis/gamma/GammaTickets.v1.sol/NofGammaTicketsV1.json new file mode 100644 index 00000000..982b9a72 --- /dev/null +++ b/src/context/abis/gamma/GammaTickets.v1.sol/NofGammaTicketsV1.json @@ -0,0 +1,584 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NofGammaTicketsV1", + "sourceName": "contracts/gamma/GammaTickets.v1.sol", + "abi": [ + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "NoTicketsAvailable", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyGammaContractsCanCall", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyOwners", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "AllTicketsRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newGammaCardsContract", + "type": "address" + } + ], + "name": "NewGammaCardsContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newGammaPacksContract", + "type": "address" + } + ], + "name": "NewGammaPacksContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "TicketGenerated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "WinnerObtained", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deleteAllTickets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gammaCardsContract", + "outputs": [ + { + "internalType": "contract IGammaCardsContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gammaPacksContract", + "outputs": [ + { + "internalType": "contract IgammaPacksContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "generateTicket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getLotteryWinner", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getTickets", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "internalType": "struct NofGammaTicketsV1.Ticket[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getTicketsByUser", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "internalType": "struct NofGammaTicketsV1.Ticket[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWinner", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaPacksContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_gammaCardsContract", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ownerToRemove", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaCardsContract", + "type": "address" + } + ], + "name": "setGammaCardsContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaPacksContract", + "type": "address" + } + ], + "name": "setGammaPacksContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tickets", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "ticketsByUser", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ticketsTotalCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "winner", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ticketId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "ticketCounter", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040526000600b5534801561001557600080fd5b5061001f33610024565b610074565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fc6806100836000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063dfbf53ae1161007c578063dfbf53ae1461029e578063e5b0b100146102bd578063e6afe6bc146102d0578063f09a4016146102e7578063f2fde38b146102fa578063fa8213d31461030d57600080fd5b80638da5cb5b146102575780638e7ea5b214610268578063b2d55c1c14610270578063cafaa47314610278578063d250f03a1461028b57600080fd5b80634c7a7ad3116100ff5780634c7a7ad3146102015780634ed026221461021457806350b44712146102295780637065cb481461023c578063715018a61461024f57600080fd5b806304ac05cf1461013c578063173825d91461017d5780632f54bf6e146101925780632f9e026a146101ce578063306e4118146101f9575b600080fd5b61014f61014a366004610e2c565b610320565b604080519485526020850193909352918301526001600160a01b031660608201526080015b60405180910390f35b61019061018b366004610e56565b61036f565b005b6101be6101a0366004610e56565b6001600160a01b031660009081526003602052604090205460ff1690565b6040519015158152602001610174565b6002546101e1906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b610190610415565b61019061020f366004610e56565b6104e9565b61021c610595565b6040516101749190610e78565b61014f610237366004610ee5565b61061f565b61019061024a366004610e56565b610662565b6101906106d9565b6000546001600160a01b03166101e1565b61014f6106ed565b61014f610709565b610190610286366004610e56565b6108b2565b6001546101e1906001600160a01b031681565b60065460075460085460095461014f939291906001600160a01b031684565b61021c6102cb366004610e56565b610957565b6102d9600b5481565b604051908152602001610174565b6101906102f5366004610efe565b6109f7565b610190610308366004610e56565b610a82565b61019061031b366004610e56565b610b00565b600a602052816000526040600020818154811061033c57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526003602052604090205460ff1661039f57604051634289c49360e01b815260040160405180910390fd5b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b1580156103fa57600080fd5b505af415801561040e573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316331461044057604051633d10446b60e21b815260040160405180910390fd5b61044c60056000610dbc565b6000600b8190555b6005548110156104bd57600a60006005838154811061047557610475610f31565b60009182526020808320600360049093020191909101546001600160a01b0316835282019290925260400181206104ab91610dbc565b806104b581610f47565b915050610454565b506040517fc3ed638c0e10b967891ee71bc361fabc770df50e93331cdf41fddc37deb28b5b90600090a1565b3360009081526003602052604090205460ff1661051957604051634289c49360e01b815260040160405180910390fd5b6001600160a01b0381166105405760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020015b60405180910390a150565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561061657600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b0316606083015290835290920191016105b9565b50505050905090565b6005818154811061062f57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491935091906001600160a01b031684565b3360009081526003602052604090205460ff1661069257604051634289c49360e01b815260040160405180910390fd5b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae4906044016103e2565b6106e1610d12565b6106eb6000610d6c565b565b6006546007546008546009546001600160a01b03165b90919293565b6002546000908190819081906001600160a01b0316331461073d57604051633d10446b60e21b815260040160405180910390fd5b60055460000361076057604051632e12ccb760e11b815260040160405180910390fd5b6006541561078b575050600654600754600854600954929450909250906001600160a01b0316610703565b60055460408051426020820152449181019190915260608101829052600091906080016040516020818303038152906040528051906020012060001c6107d19190610f6e565b9050600581815481106107e6576107e6610f31565b60009182526020909120600490910201805460068190556001820154600781905560028301546008819055600390930154600980546001600160a01b0319166001600160a01b0390921691821790556040517f314d0f2749f4f47e45bd658d5f379146bedd6ac53f8e6f0f63c5fe4ab14bc2aa946108869493929091938452602084019290925260408301526001600160a01b0316606082015260800190565b60405180910390a15050600654600754600854600954929691955093506001600160a01b039091169150565b3360009081526003602052604090205460ff166108e257604051634289c49360e01b815260040160405180910390fd5b6001600160a01b0381166109095760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f9060200161058a565b6001600160a01b0381166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b828210156109ec57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b03166060830152908352909201910161098f565b505050509050919050565b6109ff610d12565b6001600160a01b0382161580610a1c57506001600160a01b038116155b15610a3a5760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560018054929093169116178155336000908152600360205260409020805460ff19169091179055565b610a8a610d12565b6001600160a01b038116610af45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610afd81610d6c565b50565b6001546001600160a01b03163314610b2b57604051633d10446b60e21b815260040160405180910390fd5b600b54604080514260208201819052918101839052606084811b6bffffffffffffffffffffffff19169082015260009060740160408051601f1981840301815282825280516020918201206080840183528584528382018181528484018881526001600160a01b03808b1660608801818152600580546001818101835560009283528b5160049283027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081019190915588517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015587517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db282015584517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db390910180549188166001600160a01b0319928316179055948352600a8a529982208054808c0182559083529882208b519990910201978855945197870197909755915160028601559451600394909401805494909516931692909217909255600b805492945090610cba83610f47565b909155505060408051848152602081018490529081018590526001600160a01b038616907f0493d9379fb7ffa47303ca5a377a34a8034f42db6d986fe1f57b0b800fd210919060600160405180910390a25050505050565b6000546001600160a01b031633146106eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aeb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825560040290600052602060002090810190610afd91905b80821115610e0c5760008082556001820181905560028201556003810180546001600160a01b0319169055600401610dd9565b5090565b80356001600160a01b0381168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e10565b946020939093013593505050565b600060208284031215610e6857600080fd5b610e7182610e10565b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610ed857815180518552868101518786015285810151868601526060908101516001600160a01b03169085015260809093019290850190600101610e95565b5091979650505050505050565b600060208284031215610ef757600080fd5b5035919050565b60008060408385031215610f1157600080fd5b610f1a83610e10565b9150610f2860208401610e10565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b600060018201610f6757634e487b7160e01b600052601160045260246000fd5b5060010190565b600082610f8b57634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212200b27afe2f53eb51a780c414a34d035477c7e269e22008960598c6789cc86e79164736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063dfbf53ae1161007c578063dfbf53ae1461029e578063e5b0b100146102bd578063e6afe6bc146102d0578063f09a4016146102e7578063f2fde38b146102fa578063fa8213d31461030d57600080fd5b80638da5cb5b146102575780638e7ea5b214610268578063b2d55c1c14610270578063cafaa47314610278578063d250f03a1461028b57600080fd5b80634c7a7ad3116100ff5780634c7a7ad3146102015780634ed026221461021457806350b44712146102295780637065cb481461023c578063715018a61461024f57600080fd5b806304ac05cf1461013c578063173825d91461017d5780632f54bf6e146101925780632f9e026a146101ce578063306e4118146101f9575b600080fd5b61014f61014a366004610e2c565b610320565b604080519485526020850193909352918301526001600160a01b031660608201526080015b60405180910390f35b61019061018b366004610e56565b61036f565b005b6101be6101a0366004610e56565b6001600160a01b031660009081526003602052604090205460ff1690565b6040519015158152602001610174565b6002546101e1906001600160a01b031681565b6040516001600160a01b039091168152602001610174565b610190610415565b61019061020f366004610e56565b6104e9565b61021c610595565b6040516101749190610e78565b61014f610237366004610ee5565b61061f565b61019061024a366004610e56565b610662565b6101906106d9565b6000546001600160a01b03166101e1565b61014f6106ed565b61014f610709565b610190610286366004610e56565b6108b2565b6001546101e1906001600160a01b031681565b60065460075460085460095461014f939291906001600160a01b031684565b61021c6102cb366004610e56565b610957565b6102d9600b5481565b604051908152602001610174565b6101906102f5366004610efe565b6109f7565b610190610308366004610e56565b610a82565b61019061031b366004610e56565b610b00565b600a602052816000526040600020818154811061033c57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526003602052604090205460ff1661039f57604051634289c49360e01b815260040160405180910390fd5b604051632dd92c6960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b764b1a4906044015b60006040518083038186803b1580156103fa57600080fd5b505af415801561040e573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316331461044057604051633d10446b60e21b815260040160405180910390fd5b61044c60056000610dbc565b6000600b8190555b6005548110156104bd57600a60006005838154811061047557610475610f31565b60009182526020808320600360049093020191909101546001600160a01b0316835282019290925260400181206104ab91610dbc565b806104b581610f47565b915050610454565b506040517fc3ed638c0e10b967891ee71bc361fabc770df50e93331cdf41fddc37deb28b5b90600090a1565b3360009081526003602052604090205460ff1661051957604051634289c49360e01b815260040160405180910390fd5b6001600160a01b0381166105405760405163e6c4247b60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020015b60405180910390a150565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561061657600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b0316606083015290835290920191016105b9565b50505050905090565b6005818154811061062f57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491935091906001600160a01b031684565b3360009081526003602052604090205460ff1661069257604051634289c49360e01b815260040160405180910390fd5b604051632d35e2b960e21b8152600360048201526001600160a01b038216602482015273__$2004922c2908b386ae4415e9a8cdeda8c7$__9063b4d78ae4906044016103e2565b6106e1610d12565b6106eb6000610d6c565b565b6006546007546008546009546001600160a01b03165b90919293565b6002546000908190819081906001600160a01b0316331461073d57604051633d10446b60e21b815260040160405180910390fd5b60055460000361076057604051632e12ccb760e11b815260040160405180910390fd5b6006541561078b575050600654600754600854600954929450909250906001600160a01b0316610703565b60055460408051426020820152449181019190915260608101829052600091906080016040516020818303038152906040528051906020012060001c6107d19190610f6e565b9050600581815481106107e6576107e6610f31565b60009182526020909120600490910201805460068190556001820154600781905560028301546008819055600390930154600980546001600160a01b0319166001600160a01b0390921691821790556040517f314d0f2749f4f47e45bd658d5f379146bedd6ac53f8e6f0f63c5fe4ab14bc2aa946108869493929091938452602084019290925260408301526001600160a01b0316606082015260800190565b60405180910390a15050600654600754600854600954929691955093506001600160a01b039091169150565b3360009081526003602052604090205460ff166108e257604051634289c49360e01b815260040160405180910390fd5b6001600160a01b0381166109095760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a78287a942b8ea0da8734a4eb919df11e564cc48301ffcb582dc8612d98208f9060200161058a565b6001600160a01b0381166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b828210156109ec57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b03166060830152908352909201910161098f565b505050509050919050565b6109ff610d12565b6001600160a01b0382161580610a1c57506001600160a01b038116155b15610a3a5760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560018054929093169116178155336000908152600360205260409020805460ff19169091179055565b610a8a610d12565b6001600160a01b038116610af45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610afd81610d6c565b50565b6001546001600160a01b03163314610b2b57604051633d10446b60e21b815260040160405180910390fd5b600b54604080514260208201819052918101839052606084811b6bffffffffffffffffffffffff19169082015260009060740160408051601f1981840301815282825280516020918201206080840183528584528382018181528484018881526001600160a01b03808b1660608801818152600580546001818101835560009283528b5160049283027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081019190915588517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015587517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db282015584517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db390910180549188166001600160a01b0319928316179055948352600a8a529982208054808c0182559083529882208b519990910201978855945197870197909755915160028601559451600394909401805494909516931692909217909255600b805492945090610cba83610f47565b909155505060408051848152602081018490529081018590526001600160a01b038616907f0493d9379fb7ffa47303ca5a377a34a8034f42db6d986fe1f57b0b800fd210919060600160405180910390a25050505050565b6000546001600160a01b031633146106eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aeb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825560040290600052602060002090810190610afd91905b80821115610e0c5760008082556001820181905560028201556003810180546001600160a01b0319169055600401610dd9565b5090565b80356001600160a01b0381168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e10565b946020939093013593505050565b600060208284031215610e6857600080fd5b610e7182610e10565b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610ed857815180518552868101518786015285810151868601526060908101516001600160a01b03169085015260809093019290850190600101610e95565b5091979650505050505050565b600060208284031215610ef757600080fd5b5035919050565b60008060408385031215610f1157600080fd5b610f1a83610e10565b9150610f2860208401610e10565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b600060018201610f6757634e487b7160e01b600052601160045260246000fd5b5060010190565b600082610f8b57634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212200b27afe2f53eb51a780c414a34d035477c7e269e22008960598c6789cc86e79164736f6c63430008140033", + "linkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 1095 + }, + { + "length": 20, + "start": 1850 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/gamma/libs/LibControlMgmt.sol": { + "LibControlMgmt": [ + { + "length": 20, + "start": 964 + }, + { + "length": 20, + "start": 1719 + } + ] + } + } +} diff --git a/src/context/abis/libs/LibControlMgmt.sol/LibControlMgmt.json b/src/context/abis/gamma/libs/LibControlMgmt.sol/LibControlMgmt.json similarity index 100% rename from src/context/abis/libs/LibControlMgmt.sol/LibControlMgmt.json rename to src/context/abis/gamma/libs/LibControlMgmt.sol/LibControlMgmt.json diff --git a/src/context/abis/libs/LibPackVerifier.sol/LibPackVerifier.json b/src/context/abis/gamma/libs/LibPackVerifier.sol/LibPackVerifier.json similarity index 100% rename from src/context/abis/libs/LibPackVerifier.sol/LibPackVerifier.json rename to src/context/abis/gamma/libs/LibPackVerifier.sol/LibPackVerifier.json diff --git a/src/context/abis/libs/LibStringUtils.sol/LibStringUtils.json b/src/context/abis/gamma/libs/LibStringUtils.sol/LibStringUtils.json similarity index 100% rename from src/context/abis/libs/LibStringUtils.sol/LibStringUtils.json rename to src/context/abis/gamma/libs/LibStringUtils.sol/LibStringUtils.json diff --git a/src/context/abis/TestDAI.v3.sol/AccessControl.json b/src/context/abis/testDai/TestDAI.v3.sol/AccessControl.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/AccessControl.json rename to src/context/abis/testDai/TestDAI.v3.sol/AccessControl.json diff --git a/src/context/abis/TestDAI.v3.sol/AccessControlMixin.json b/src/context/abis/testDai/TestDAI.v3.sol/AccessControlMixin.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/AccessControlMixin.json rename to src/context/abis/testDai/TestDAI.v3.sol/AccessControlMixin.json diff --git a/src/context/abis/TestDAI.v3.sol/Address.json b/src/context/abis/testDai/TestDAI.v3.sol/Address.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/Address.json rename to src/context/abis/testDai/TestDAI.v3.sol/Address.json diff --git a/src/context/abis/TestDAI.v3.sol/ChainConstants.json b/src/context/abis/testDai/TestDAI.v3.sol/ChainConstants.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/ChainConstants.json rename to src/context/abis/testDai/TestDAI.v3.sol/ChainConstants.json diff --git a/src/context/abis/TestDAI.v3.sol/Context.json b/src/context/abis/testDai/TestDAI.v3.sol/Context.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/Context.json rename to src/context/abis/testDai/TestDAI.v3.sol/Context.json diff --git a/src/context/abis/TestDAI.v3.sol/ContextMixin.json b/src/context/abis/testDai/TestDAI.v3.sol/ContextMixin.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/ContextMixin.json rename to src/context/abis/testDai/TestDAI.v3.sol/ContextMixin.json diff --git a/src/context/abis/TestDAI.v3.sol/EIP712Base.json b/src/context/abis/testDai/TestDAI.v3.sol/EIP712Base.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/EIP712Base.json rename to src/context/abis/testDai/TestDAI.v3.sol/EIP712Base.json diff --git a/src/context/abis/TestDAI.v3.sol/ERC20.json b/src/context/abis/testDai/TestDAI.v3.sol/ERC20.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/ERC20.json rename to src/context/abis/testDai/TestDAI.v3.sol/ERC20.json diff --git a/src/context/abis/TestDAI.v3.sol/EnumerableSet.json b/src/context/abis/testDai/TestDAI.v3.sol/EnumerableSet.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/EnumerableSet.json rename to src/context/abis/testDai/TestDAI.v3.sol/EnumerableSet.json diff --git a/src/context/abis/TestDAI.v3.sol/IChildToken.json b/src/context/abis/testDai/TestDAI.v3.sol/IChildToken.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/IChildToken.json rename to src/context/abis/testDai/TestDAI.v3.sol/IChildToken.json diff --git a/src/context/abis/TestDAI.v3.sol/IERC20.json b/src/context/abis/testDai/TestDAI.v3.sol/IERC20.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/IERC20.json rename to src/context/abis/testDai/TestDAI.v3.sol/IERC20.json diff --git a/src/context/abis/TestDAI.v3.sol/Initializable.json b/src/context/abis/testDai/TestDAI.v3.sol/Initializable.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/Initializable.json rename to src/context/abis/testDai/TestDAI.v3.sol/Initializable.json diff --git a/src/context/abis/TestDAI.v3.sol/NativeMetaTransaction.json b/src/context/abis/testDai/TestDAI.v3.sol/NativeMetaTransaction.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/NativeMetaTransaction.json rename to src/context/abis/testDai/TestDAI.v3.sol/NativeMetaTransaction.json diff --git a/src/context/abis/TestDAI.v3.sol/NofTestDAIV3.json b/src/context/abis/testDai/TestDAI.v3.sol/NofTestDAIV3.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/NofTestDAIV3.json rename to src/context/abis/testDai/TestDAI.v3.sol/NofTestDAIV3.json diff --git a/src/context/abis/TestDAI.v3.sol/SafeMath.json b/src/context/abis/testDai/TestDAI.v3.sol/SafeMath.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/SafeMath.json rename to src/context/abis/testDai/TestDAI.v3.sol/SafeMath.json diff --git a/src/context/abis/TestDAI.v3.sol/UChildERC20.json b/src/context/abis/testDai/TestDAI.v3.sol/UChildERC20.json similarity index 100% rename from src/context/abis/TestDAI.v3.sol/UChildERC20.json rename to src/context/abis/testDai/TestDAI.v3.sol/UChildERC20.json diff --git a/src/pages/api/characters.js b/src/pages/api/characters.js index 5d63a17b..dc7a4b26 100644 --- a/src/pages/api/characters.js +++ b/src/pages/api/characters.js @@ -41,7 +41,6 @@ export default async function handler(req, res) { join(process.cwd(), 'scripts', 'characters', `${c.id}.png`) ) - // Crear una matriz de promesas para cargar las imágenes const imagePromises = characterImagePaths.map(async (imagePath) => await Jimp.read(imagePath)) diff --git a/src/services/gamma.js b/src/services/gamma.js index baf774ec..5fc367f1 100644 --- a/src/services/gamma.js +++ b/src/services/gamma.js @@ -111,7 +111,7 @@ export const openPacks = async ( export const getMaxPacksAllowedToOpenAtOnce = async (cardsContract) => { try { - const result = await cardsContract.maxPacksToOpenAtOnce() + const result = await cardsContract.s_maxPacksToOpenAtOnce() return result } catch (e) { handleError('0x', 'getMaxPacksAllowedToOpenAtOnce', e) @@ -123,7 +123,6 @@ export const getCardsByUser = async (cardsContract, walletAddress) => { try { if (!cardsContract || !walletAddress) return const cardData = await cardsContract?.getCardsByUser(walletAddress) - const cardsPages = getGammacardsPages() let cardsObj = { ...cardsPages } @@ -187,7 +186,7 @@ export const hasCard = async (cardsContract, walletAddress, cardNumber) => { export const getPackPrice = async (cardsContract) => { try { if (!cardsContract) return - const price = await cardsContract.packPrice() + const price = await cardsContract.s_packPrice() const result = ethers.utils.formatUnits(price, 18) return result } catch (e) { @@ -199,7 +198,7 @@ export const getPackPrice = async (cardsContract) => { export const getUserAlbums120Qtty = async (cardsContract, walletAddress) => { try { if (!cardsContract || !walletAddress) return - const userHasAlbum = await cardsContract.cardsByUser(walletAddress, 120) + const userHasAlbum = await cardsContract.s_cardsByUser(walletAddress, 120) return userHasAlbum } catch (e) { handleError(walletAddress, 'getUserAlbums120Qtty', e) @@ -275,20 +274,20 @@ export const burnCards = async (cardsContract, daiContract, walletAddress, cards } export const allowedToFinishAlbum60 = async (cardsContract, daiContract, walletAddress) => { - const userHasAlbum = await cardsContract.cardsByUser(walletAddress, 121) - const prizesBalance = await cardsContract.prizesBalance() - const secondaryAlbumPrize = await cardsContract.secondaryAlbumPrize() + const userHasAlbum = await cardsContract.s_cardsByUser(walletAddress, 121) + const s_prizesBalance = await cardsContract.s_prizesBalance() + const s_secondaryAlbumPrize = await cardsContract.s_secondaryAlbumPrize() const gammaContractBalance = await verifyDAIBalance(daiContract, cardsContract.address) - const prizeBalanceFormatted = ethers.utils.formatUnits(prizesBalance, 18) - const secondaryAlbumPrizeFormatted = ethers.utils.formatUnits(secondaryAlbumPrize, 18) + const prizeBalanceFormatted = ethers.utils.formatUnits(s_prizesBalance, 18) + const secondaryAlbumPrizeFormatted = ethers.utils.formatUnits(s_secondaryAlbumPrize, 18) const gammaContractBalanceFormatted = ethers.utils.formatUnits(gammaContractBalance, 18) - // require(prizesBalance >= secondaryAlbumPrize, "Insufficient funds (burnCards balance)."); + // require(s_prizesBalance >= s_secondaryAlbumPrize, "Insufficient funds (burnCards balance)."); const prizesBalanzGTSecondaryAlbumPrice = parseInt(prizeBalanceFormatted) >= parseInt(secondaryAlbumPrizeFormatted) // uint256 contractBalance = erc20Token.balanceOf(address(this)); - // require(contractBalance >= secondaryAlbumPrize, "Insufficient funds (contract)."); + // require(contractBalance >= s_secondaryAlbumPrize, "Insufficient funds (contract)."); const contractBalanzGTAlSecondarybumPrice = parseInt(gammaContractBalanceFormatted) >= parseInt(secondaryAlbumPrizeFormatted) @@ -305,31 +304,31 @@ export const allowedToFinishAlbum60 = async (cardsContract, daiContract, walletA result }) - return { result: result, amountRequired: secondaryAlbumPrize } + return { result: result, amountRequired: s_secondaryAlbumPrize } } export const allowedToFinishAlbum120 = async (cardsContract, daiContract, walletAddress) => { // Hay 4 condicione sen el contrato para poder completarlo: // 1. Que el usuario tengan un álbum: require(cardsByUser[msg.sender][120] > 0, "No tienes ningun album"); - // 2. Que haya un balance mayor a lo que se paga de premio: require(prizesBalance >= mainAlbumPrize, "Fondos insuficientes"); + // 2. Que haya un balance mayor a lo que se paga de premio: require(s_prizesBalance >= s_mainAlbumPrize, "Fondos insuficientes"); // 3. Que el usuario tenga todas las cartas. - // 4. Que el contrato tenga un balance superior al precio del premio (mainAlbumPrize) + // 4. Que el contrato tenga un balance superior al precio del premio (s_mainAlbumPrize) // Las 4 se validan en el contrato y aquí (para evitar la llamada al contrato) // require(cardsByUser[msg.sender][120] > 0, "No tienes ningun album"); if (!cardsContract || !walletAddress) return - const userHasAlbum = await cardsContract.cardsByUser(walletAddress, 120) - const prizesBalance = await cardsContract.prizesBalance() - const mainAlbumPrize = await cardsContract.mainAlbumPrize() + const userHasAlbum = await cardsContract.s_cardsByUser(walletAddress, 120) + const s_prizesBalance = await cardsContract.s_prizesBalance() + const s_mainAlbumPrize = await cardsContract.s_mainAlbumPrize() const gammaContractBalance = await verifyDAIBalance(daiContract, cardsContract.address) - const prizeBalanceFormatted = ethers.utils.formatUnits(prizesBalance, 18) - const albumPrizeFormatted = ethers.utils.formatUnits(mainAlbumPrize, 18) + const prizeBalanceFormatted = ethers.utils.formatUnits(s_prizesBalance, 18) + const albumPrizeFormatted = ethers.utils.formatUnits(s_mainAlbumPrize, 18) const gammaContractBalanceFormatted = ethers.utils.formatUnits(gammaContractBalance, 18) - // require(prizesBalance >= mainAlbumPrize, "Fondos insuficientes"); + // require(s_prizesBalance >= s_mainAlbumPrize, "Fondos insuficientes"); const prizesBalanzGTAlbumPrice = parseInt(prizeBalanceFormatted) >= parseInt(albumPrizeFormatted) - // require gammaCardContractBalance >= mainAlbumPrize + // require gammaCardContractBalance >= s_mainAlbumPrize const contractBalanzGTAlbumPrice = parseInt(gammaContractBalanceFormatted) >= parseInt(albumPrizeFormatted)