{
  "_format": "hh-sol-artifact-1",
  "contractName": "veVaultedge",
  "sourceName": "contracts/__deprecated__/veVaultedge.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_updatable",
          "type": "bool"
        }
      ],
      "name": "RewarderStatusUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_contractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_isWhitelisted",
          "type": "bool"
        }
      ],
      "name": "UpdatedWhitelistedContracts",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_newVaultedgeLock",
          "type": "uint256"
        }
      ],
      "name": "UserLockedVaultedgeAmountChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_isStakeIncrease",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_stakeAmount",
          "type": "uint256"
        }
      ],
      "name": "UserUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "UserVeVaultedgeBurned",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "accumulationRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_rewarder",
          "type": "address"
        }
      ],
      "name": "addUpdatableRewarder",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "collateralGate",
      "outputs": [
        {
          "internalType": "contract ICollateralGate",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "emitter",
      "outputs": [
        {
          "internalType": "contract IEmitter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAccumulationRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getTotalVaultedge",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getTotalVeVaultedge",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getUpdatableRewarders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_rewarder",
          "type": "address"
        }
      ],
      "name": "getUserVaultedgeOnRewarder",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_rewarder",
          "type": "address"
        }
      ],
      "name": "getVeVaultedgeOnRewarder",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_veVaultedgeBurn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_newVaultedgeLock",
          "type": "uint256"
        }
      ],
      "name": "lockBurnFromCollateralGate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "notifyAllRewarders",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "rewarders",
          "type": "address[]"
        }
      ],
      "name": "notifyRewarders",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "removeUpdatableRewarder",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ICollateralGate",
          "name": "_collateralGate",
          "type": "address"
        }
      ],
      "name": "setCollateralGate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IEmitter",
          "name": "_emitter",
          "type": "address"
        }
      ],
      "name": "setEmitter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_vaultedge",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_vaultedgeController",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_accumulationRate",
          "type": "uint256"
        }
      ],
      "name": "setup",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalVaultedge",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newVaultedgeLock",
          "type": "uint256"
        }
      ],
      "name": "unlockFromCollateralGate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "updatableRewarders",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "rewarder",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "isIncrease",
              "type": "bool"
            }
          ],
          "internalType": "struct veVaultedge.RewarderUpdate[]",
          "name": "_vaultedgeAdjustments",
          "type": "tuple[]"
        }
      ],
      "name": "update",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newcontractController",
          "type": "address"
        }
      ],
      "name": "updateContractController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_contractAddress",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isWhitelisted",
          "type": "bool"
        }
      ],
      "name": "updateWhitelistedCallers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultedgeToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611fe7806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063908be262116100e3578063cbe406221161008c578063e06eff0311610066578063e06eff031461035c578063ec5ea9f114610399578063f1fc698a146103a257600080fd5b8063cbe4062214610323578063dce1137514610336578063deec22701461034957600080fd5b80639f903ff6116100bd5780639f903ff6146102ea578063c6fc9e5d146102fd578063c90025951461031057600080fd5b8063908be262146102bb57806393d7a613146102ce5780639879403a146102e157600080fd5b80634b8790691161014557806364ede80f1161011f57806364ede80f146102825780637db2d036146102955780638300f30c146102a857600080fd5b80634b8790691461025457806362757d37146102675780636491d4091461026f57600080fd5b80633f3af770116101765780633f3af770146101f757806344ba055d1461020a57806345783a821461024157600080fd5b80630f0028ef1461019d5780632826a520146101b25780633746452e146101e2575b600080fd5b6101b06101ab366004611b1d565b6103aa565b005b6000546101c5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ea61058c565b6040516101d99190611b41565b6101b0610205366004611b8e565b6105ee565b610233610218366004611b1d565b6001600160a01b031660009081526006602052604090205490565b6040519081526020016101d9565b6101b061024f366004611b1d565b610782565b6101b0610262366004611bb5565b6107f1565b600354610233565b6101b061027d366004611c82565b6108cd565b6101b0610290366004611d21565b6108d7565b6102336102a3366004611d56565b610b65565b6101b06102b6366004611b1d565b610c8a565b600b546101c5906001600160a01b031681565b6102336102dc366004611b1d565b610cc2565b61023360025481565b6101b06102f8366004611b1d565b610d49565b6101b061030b366004611d84565b610dc4565b6101c561031e366004611b8e565b610f62565b6101b0610331366004611db0565b610f8c565b6007546101c5906001600160a01b031681565b6101b0610357366004611df1565b611020565b61023361036a366004611d56565b6001600160a01b0391821660009081526006602090815260408083209390941682526001909201909152205490565b61023360035481565b6101b06112b7565b600a546001600160a01b031633146104095760405162461bcd60e51b815260206004820152601b60248201527f76655661756c74656467653a20696e76616c69642063616c6c6572000000000060448201526064015b60405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff16156104985760405162461bcd60e51b815260206004820152602360248201527f76655661756c74656467653a20726577617264657220616c726561647920616460448201527f64656400000000000000000000000000000000000000000000000000000000006064820152608401610400565b600854600a116104ea5760405162461bcd60e51b815260206004820152601f60248201527f76655661756c74656467653a20746f6f206d616e7920726577617264657273006044820152606401610400565b6001600160a01b0381166000818152600960209081526040808320805460ff1916600190811790915560088054808301825594527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390930180546001600160a01b031916851790558051938452908301919091527f2e09b860d94f988a28d5226aaf8e221845ffc2209d169811b255636933128b0d910160405180910390a150565b606060088054806020026020016040519081016040528092919081815260200182805480156105e457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105c6575b5050505050905090565b600a546001600160a01b031633146106485760405162461bcd60e51b815260206004820152601b60248201527f76655661756c74656467653a20696e76616c69642063616c6c657200000000006044820152606401610400565b60006008828154811061065d5761065d611ec1565b600091825260209091200154600880546001600160a01b0390921692509061068790600190611eed565b8154811061069757610697611ec1565b600091825260209091200154600880546001600160a01b0390921691849081106106c3576106c3611ec1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600880548061070257610702611f00565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038316808352600982526040808420805460ff191690558051918252918101929092527f2e09b860d94f988a28d5226aaf8e221845ffc2209d169811b255636933128b0d91015b60405180910390a15050565b600a546001600160a01b03166107bb57600a80546001600160a01b0319167343fbdf7d784f0d1723866b401249cb6f9e85636c17905550565b600a546001600160a01b031633146107d257600080fd5b600a80546001600160a01b0319166001600160a01b0383161790555b50565b6001546001600160a01b031633146108715760405162461bcd60e51b815260206004820152602e60248201527f76655661756c74656467653a2043616c6c6572206973206e6f74205661756c7460448201527f65646765436f6e74726f6c6c65720000000000000000000000000000000000006064820152608401610400565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527fda2ee3571935b8b77a334c28a935df4905fd3da7875f28b4328989d43f9d69249101610776565b6107ee338261131b565b600b546001600160a01b031633146109315760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792063616c6c61626c6520627920436f6c6c61746572616c20476174656044820152606401610400565b60075460405163798c3c5760e11b81526001600160a01b0385811660048301529091169063f31878ae90602401600060405180830381600087803b15801561097857600080fd5b505af115801561098c573d6000803e3d6000fd5b505050506001600160a01b038381166000908152600660209081526040808320600b54909416835260018401909152902054821115610a335760405162461bcd60e51b815260206004820152602660248201527f6e6f7420656e6f756768207661756c746564676520617661696c61626c65207460448201527f6f206c6f636b00000000000000000000000000000000000000000000000000006064820152608401610400565b610a3e846001611488565b82816003016000828254610a529190611eed565b90915550504260028201556001600160a01b0384166000908152600c602052604090819020839055517fd557295d377b9ead8190457d9a8aebafe1728649337b67fef964989cc2067ce290610aaa9084815260200190565b60405180910390a1610b16846008805480602002602001604051908101604052809291908181526020018280548015610b0c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aee575b505050505061131b565b604080516001600160a01b03861681523360208201529081018490527f409edc4452901e39fb4701c32c82ce38beb4e60698430cf604c3ef240ef3d6259060600160405180910390a150505050565b6001600160a01b038216600090815260066020526040812080548203610b8f576000915050610c84565b6000610b9a85610cc2565b600b549091506001600160a01b0390811690851603610c2b576001600160a01b0385166000908152600c60205260409020548254610bd89190611eed565b6001600160a01b038087166000908152600c6020908152604080832054938916835260018701909152902054610c0e9190611eed565b610c189083611f16565b610c229190611f2d565b92505050610c84565b6001600160a01b0385166000908152600c60205260409020548254610c509190611eed565b6001600160a01b0385166000908152600184016020526040902054610c759083611f16565b610c7f9190611f2d565b925050505b92915050565b600b546001600160a01b031615610ca057600080fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260066020526040812060028101548290610ceb9042611eed565b6003546001600160a01b0386166000908152600c602052604081205485549394509092849291610d1a91611eed565b610d249190611f16565b610d2e9190611f16565b9050808360030154610d409190611f4f565b95945050505050565b6007546001600160a01b031615610da25760405162461bcd60e51b815260206004820152601360248201527f656d697474657220616c726561647920736574000000000000000000000000006044820152606401610400565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314610e1e5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792063616c6c61626c6520627920436f6c6c61746572616c20476174656044820152606401610400565b60075460405163798c3c5760e11b81526001600160a01b0384811660048301529091169063f31878ae90602401600060405180830381600087803b158015610e6557600080fd5b505af1158015610e79573d6000803e3d6000fd5b505050506001600160a01b0382166000908152600660205260409020610ea0836001611488565b4260028201556001600160a01b0383166000908152600c602052604090819020839055517fd557295d377b9ead8190457d9a8aebafe1728649337b67fef964989cc2067ce290610ef39084815260200190565b60405180910390a1610f5d836008805480602002602001604051908101604052809291908181526020018280548015610b0c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610aee57505050505061131b565b505050565b60088181548110610f7257600080fd5b6000918252602090912001546001600160a01b0316905081565b60045460ff1615610fdf5760405162461bcd60e51b815260206004820152601a60248201527f76655661756c74656467653a20616c72656164792073657475700000000000006044820152606401610400565b600080546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911782556003556004805460ff19169091179055565b611028611526565b60075460405163798c3c5760e11b81523360048201526001600160a01b039091169063f31878ae90602401600060405180830381600087803b15801561106d57600080fd5b505af1158015611081573d6000803e3d6000fd5b505033600090815260066020526040812092509050806110a0846115d8565b915091506110ae3383611488565b6110b83385611697565b6110c3838383611833565b426002840155600b546040517f098b18210000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b03169063098b1821906024016020604051808303816000875af115801561112d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111519190611f62565b336000908152600c602052604090819020829055519091507fd557295d377b9ead8190457d9a8aebafe1728649337b67fef964989cc2067ce2906111989083815260200190565b60405180910390a1600b546001600160a01b0316600090815260018501602052604090205481111561120c5760405162461bcd60e51b815260206004820152601f60248201527f5570646174652072656d6f766573206c6f636b6564205661756c7465646765006044820152606401610400565b61126e336008805480602002602001604051908101604052809291908181526020018280548015610b0c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610aee57505050505061131b565b6040805133815284151560208201529081018390527fab3ddac2c28890b26a232d2fcdc94156965213b4cfdf5b1cdd69fc24a04d22a59060600160405180910390a15050505050565b611319336008805480602002602001604051908101604052809291908181526020018280548015610b0c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610aee57505050505061131b565b565b6001600160a01b03821660009081526006602052604081209061133d84610cc2565b905060005b835181101561148157600084828151811061135f5761135f611ec1565b6020908102919091018101516001600160a01b0381166000908152600990925260409091205490915060ff161561146e578354600090156113f1576001600160a01b0387166000908152600c602052604090205485546113bf9190611eed565b6001600160a01b03831660009081526001870160205260409020546113e49086611f16565b6113ee9190611f2d565b90505b6040517f4f00a93e0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201839052831690634f00a93e90604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050505b508061147981611f7b565b915050611342565b5050505050565b6001600160a01b0382166000908152600660205260409020811561151a5760008160020154426114b89190611eed565b6003546001600160a01b0386166000908152600c6020526040812054855493945090928492916114e791611eed565b6114f19190611f16565b6114fb9190611f16565b905080836003015461150d9190611f4f565b600384015550610f5d9050565b60006003820155505050565b333214611319573360009081526005602052604090205460ff166113195760405162461bcd60e51b815260206004820152604960248201527f76655661756c74656467653a2075706461746528292063616e206f6e6c79206260448201527f652063616c6c656420627920454f4173206f722077686974656c69737465642060648201527f636f6e7472616374730000000000000000000000000000000000000000000000608482015260a401610400565b60008060008060008551905060005b818110156116805786818151811061160157611601611ec1565b602002602001015160400151156116425786818151811061162457611624611ec1565b6020026020010151602001518461163b9190611f4f565b935061166e565b86818151811061165457611654611ec1565b6020026020010151602001518361166b9190611f4f565b92505b8061167881611f7b565b9150506115e7565b5061168b8383611ad1565b94509450505050915091565b6001600160a01b0382166000908152600660205260408120825190915b818110156114815760008482815181106116d0576116d0611ec1565b602002602001015160000151905060008583815181106116f2576116f2611ec1565b6020026020010151604001519050600086848151811061171457611714611ec1565b6020026020010151602001519050811561175d576001600160a01b038316600090815260018701602052604081208054839290611752908490611f4f565b9091555061181d9050565b6001600160a01b03831660009081526001870160205260409020548111156117ed5760405162461bcd60e51b815260206004820152603660248201527f76655661756c74656467653a20696e73756666696369656e74205661756c746560448201527f646765207374616b6564206f6e207265776172646572000000000000000000006064820152608401610400565b6001600160a01b038316600090815260018701602052604081208054839290611817908490611eed565b90915550505b505050808061182b90611f7b565b9150506116b4565b8015611a4d578115611914576000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d39190611f94565b6118dc57600080fd5b808360000160008282546118f09190611f4f565b9250508190555080600260008282546119099190611f4f565b90915550611a4d9050565b825481111561198b5760405162461bcd60e51b815260206004820152603760248201527f76655661756c74656467653a20696e73756666696369656e74205661756c746560448201527f64676520666f72207573657220746f20756e7374616b650000000000000000006064820152608401610400565b8083600001600082825461199f9190611eed565b9250508190555080600260008282546119b89190611eed565b90915550506000546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190611f94565b505b6b019d971e4fe8401e740000006002541115610f5d5760405162461bcd60e51b815260206004820152603c60248201527f6d6f7265205661756c7465646765207374616b656420696e207468697320636f60448201527f6e7472616374207468616e2074686520746f74616c20737570706c79000000006064820152608401610400565b600080828410611af0576001611ae78486611eed565b91509150611b01565b6000611afc8585611eed565b915091505b9250929050565b6001600160a01b03811681146107ee57600080fd5b600060208284031215611b2f57600080fd5b8135611b3a81611b08565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015611b825783516001600160a01b031683529284019291840191600101611b5d565b50909695505050505050565b600060208284031215611ba057600080fd5b5035919050565b80151581146107ee57600080fd5b60008060408385031215611bc857600080fd5b8235611bd381611b08565b91506020830135611be381611ba7565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611c2757611c27611bee565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611bee565b604052919050565b600067ffffffffffffffff821115611c7857611c78611bee565b5060051b60200190565b60006020808385031215611c9557600080fd5b823567ffffffffffffffff811115611cac57600080fd5b8301601f81018513611cbd57600080fd5b8035611cd0611ccb82611c5e565b611c2d565b81815260059190911b82018301908381019087831115611cef57600080fd5b928401925b82841015611d16578335611d0781611b08565b82529284019290840190611cf4565b979650505050505050565b600080600060608486031215611d3657600080fd5b8335611d4181611b08565b95602085013595506040909401359392505050565b60008060408385031215611d6957600080fd5b8235611d7481611b08565b91506020830135611be381611b08565b60008060408385031215611d9757600080fd5b8235611da281611b08565b946020939093013593505050565b600080600060608486031215611dc557600080fd5b8335611dd081611b08565b92506020840135611de081611b08565b929592945050506040919091013590565b60006020808385031215611e0457600080fd5b823567ffffffffffffffff811115611e1b57600080fd5b8301601f81018513611e2c57600080fd5b8035611e3a611ccb82611c5e565b81815260609182028301840191848201919088841115611e5957600080fd5b938501935b83851015611eb55780858a031215611e765760008081fd5b611e7e611c04565b8535611e8981611b08565b81528587013587820152604080870135611ea281611ba7565b9082015283529384019391850191611e5e565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610c8457610c84611ed7565b634e487b7160e01b600052603160045260246000fd5b8082028115828204841417610c8457610c84611ed7565b600082611f4a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610c8457610c84611ed7565b600060208284031215611f7457600080fd5b5051919050565b600060018201611f8d57611f8d611ed7565b5060010190565b600060208284031215611fa657600080fd5b8151611b3a81611ba756fea2646970667358221220dc5b51518802e7a0b2c0eca8fd15d525073f3bedbecaddfaeb914bb49e70457064736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101985760003560e01c8063908be262116100e3578063cbe406221161008c578063e06eff0311610066578063e06eff031461035c578063ec5ea9f114610399578063f1fc698a146103a257600080fd5b8063cbe4062214610323578063dce1137514610336578063deec22701461034957600080fd5b80639f903ff6116100bd5780639f903ff6146102ea578063c6fc9e5d146102fd578063c90025951461031057600080fd5b8063908be262146102bb57806393d7a613146102ce5780639879403a146102e157600080fd5b80634b8790691161014557806364ede80f1161011f57806364ede80f146102825780637db2d036146102955780638300f30c146102a857600080fd5b80634b8790691461025457806362757d37146102675780636491d4091461026f57600080fd5b80633f3af770116101765780633f3af770146101f757806344ba055d1461020a57806345783a821461024157600080fd5b80630f0028ef1461019d5780632826a520146101b25780633746452e146101e2575b600080fd5b6101b06101ab366004611b1d565b6103aa565b005b6000546101c5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ea61058c565b6040516101d99190611b41565b6101b0610205366004611b8e565b6105ee565b610233610218366004611b1d565b6001600160a01b031660009081526006602052604090205490565b6040519081526020016101d9565b6101b061024f366004611b1d565b610782565b6101b0610262366004611bb5565b6107f1565b600354610233565b6101b061027d366004611c82565b6108cd565b6101b0610290366004611d21565b6108d7565b6102336102a3366004611d56565b610b65565b6101b06102b6366004611b1d565b610c8a565b600b546101c5906001600160a01b031681565b6102336102dc366004611b1d565b610cc2565b61023360025481565b6101b06102f8366004611b1d565b610d49565b6101b061030b366004611d84565b610dc4565b6101c561031e366004611b8e565b610f62565b6101b0610331366004611db0565b610f8c565b6007546101c5906001600160a01b031681565b6101b0610357366004611df1565b611020565b61023361036a366004611d56565b6001600160a01b0391821660009081526006602090815260408083209390941682526001909201909152205490565b61023360035481565b6101b06112b7565b600a546001600160a01b031633146104095760405162461bcd60e51b815260206004820152601b60248201527f76655661756c74656467653a20696e76616c69642063616c6c6572000000000060448201526064015b60405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff16156104985760405162461bcd60e51b815260206004820152602360248201527f76655661756c74656467653a20726577617264657220616c726561647920616460448201527f64656400000000000000000000000000000000000000000000000000000000006064820152608401610400565b600854600a116104ea5760405162461bcd60e51b815260206004820152601f60248201527f76655661756c74656467653a20746f6f206d616e7920726577617264657273006044820152606401610400565b6001600160a01b0381166000818152600960209081526040808320805460ff1916600190811790915560088054808301825594527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390930180546001600160a01b031916851790558051938452908301919091527f2e09b860d94f988a28d5226aaf8e221845ffc2209d169811b255636933128b0d910160405180910390a150565b606060088054806020026020016040519081016040528092919081815260200182805480156105e457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105c6575b5050505050905090565b600a546001600160a01b031633146106485760405162461bcd60e51b815260206004820152601b60248201527f76655661756c74656467653a20696e76616c69642063616c6c657200000000006044820152606401610400565b60006008828154811061065d5761065d611ec1565b600091825260209091200154600880546001600160a01b0390921692509061068790600190611eed565b8154811061069757610697611ec1565b600091825260209091200154600880546001600160a01b0390921691849081106106c3576106c3611ec1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600880548061070257610702611f00565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038316808352600982526040808420805460ff191690558051918252918101929092527f2e09b860d94f988a28d5226aaf8e221845ffc2209d169811b255636933128b0d91015b60405180910390a15050565b600a546001600160a01b03166107bb57600a80546001600160a01b0319167343fbdf7d784f0d1723866b401249cb6f9e85636c17905550565b600a546001600160a01b031633146107d257600080fd5b600a80546001600160a01b0319166001600160a01b0383161790555b50565b6001546001600160a01b031633146108715760405162461bcd60e51b815260206004820152602e60248201527f76655661756c74656467653a2043616c6c6572206973206e6f74205661756c7460448201527f65646765436f6e74726f6c6c65720000000000000000000000000000000000006064820152608401610400565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527fda2ee3571935b8b77a334c28a935df4905fd3da7875f28b4328989d43f9d69249101610776565b6107ee338261131b565b600b546001600160a01b031633146109315760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792063616c6c61626c6520627920436f6c6c61746572616c20476174656044820152606401610400565b60075460405163798c3c5760e11b81526001600160a01b0385811660048301529091169063f31878ae90602401600060405180830381600087803b15801561097857600080fd5b505af115801561098c573d6000803e3d6000fd5b505050506001600160a01b038381166000908152600660209081526040808320600b54909416835260018401909152902054821115610a335760405162461bcd60e51b815260206004820152602660248201527f6e6f7420656e6f756768207661756c746564676520617661696c61626c65207460448201527f6f206c6f636b00000000000000000000000000000000000000000000000000006064820152608401610400565b610a3e846001611488565b82816003016000828254610a529190611eed565b90915550504260028201556001600160a01b0384166000908152600c602052604090819020839055517fd557295d377b9ead8190457d9a8aebafe1728649337b67fef964989cc2067ce290610aaa9084815260200190565b60405180910390a1610b16846008805480602002602001604051908101604052809291908181526020018280548015610b0c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aee575b505050505061131b565b604080516001600160a01b03861681523360208201529081018490527f409edc4452901e39fb4701c32c82ce38beb4e60698430cf604c3ef240ef3d6259060600160405180910390a150505050565b6001600160a01b038216600090815260066020526040812080548203610b8f576000915050610c84565b6000610b9a85610cc2565b600b549091506001600160a01b0390811690851603610c2b576001600160a01b0385166000908152600c60205260409020548254610bd89190611eed565b6001600160a01b038087166000908152600c6020908152604080832054938916835260018701909152902054610c0e9190611eed565b610c189083611f16565b610c229190611f2d565b92505050610c84565b6001600160a01b0385166000908152600c60205260409020548254610c509190611eed565b6001600160a01b0385166000908152600184016020526040902054610c759083611f16565b610c7f9190611f2d565b925050505b92915050565b600b546001600160a01b031615610ca057600080fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260066020526040812060028101548290610ceb9042611eed565b6003546001600160a01b0386166000908152600c602052604081205485549394509092849291610d1a91611eed565b610d249190611f16565b610d2e9190611f16565b9050808360030154610d409190611f4f565b95945050505050565b6007546001600160a01b031615610da25760405162461bcd60e51b815260206004820152601360248201527f656d697474657220616c726561647920736574000000000000000000000000006044820152606401610400565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314610e1e5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792063616c6c61626c6520627920436f6c6c61746572616c20476174656044820152606401610400565b60075460405163798c3c5760e11b81526001600160a01b0384811660048301529091169063f31878ae90602401600060405180830381600087803b158015610e6557600080fd5b505af1158015610e79573d6000803e3d6000fd5b505050506001600160a01b0382166000908152600660205260409020610ea0836001611488565b4260028201556001600160a01b0383166000908152600c602052604090819020839055517fd557295d377b9ead8190457d9a8aebafe1728649337b67fef964989cc2067ce290610ef39084815260200190565b60405180910390a1610f5d836008805480602002602001604051908101604052809291908181526020018280548015610b0c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610aee57505050505061131b565b505050565b60088181548110610f7257600080fd5b6000918252602090912001546001600160a01b0316905081565b60045460ff1615610fdf5760405162461bcd60e51b815260206004820152601a60248201527f76655661756c74656467653a20616c72656164792073657475700000000000006044820152606401610400565b600080546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911782556003556004805460ff19169091179055565b611028611526565b60075460405163798c3c5760e11b81523360048201526001600160a01b039091169063f31878ae90602401600060405180830381600087803b15801561106d57600080fd5b505af1158015611081573d6000803e3d6000fd5b505033600090815260066020526040812092509050806110a0846115d8565b915091506110ae3383611488565b6110b83385611697565b6110c3838383611833565b426002840155600b546040517f098b18210000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b03169063098b1821906024016020604051808303816000875af115801561112d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111519190611f62565b336000908152600c602052604090819020829055519091507fd557295d377b9ead8190457d9a8aebafe1728649337b67fef964989cc2067ce2906111989083815260200190565b60405180910390a1600b546001600160a01b0316600090815260018501602052604090205481111561120c5760405162461bcd60e51b815260206004820152601f60248201527f5570646174652072656d6f766573206c6f636b6564205661756c7465646765006044820152606401610400565b61126e336008805480602002602001604051908101604052809291908181526020018280548015610b0c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610aee57505050505061131b565b6040805133815284151560208201529081018390527fab3ddac2c28890b26a232d2fcdc94156965213b4cfdf5b1cdd69fc24a04d22a59060600160405180910390a15050505050565b611319336008805480602002602001604051908101604052809291908181526020018280548015610b0c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610aee57505050505061131b565b565b6001600160a01b03821660009081526006602052604081209061133d84610cc2565b905060005b835181101561148157600084828151811061135f5761135f611ec1565b6020908102919091018101516001600160a01b0381166000908152600990925260409091205490915060ff161561146e578354600090156113f1576001600160a01b0387166000908152600c602052604090205485546113bf9190611eed565b6001600160a01b03831660009081526001870160205260409020546113e49086611f16565b6113ee9190611f2d565b90505b6040517f4f00a93e0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201839052831690634f00a93e90604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050505b508061147981611f7b565b915050611342565b5050505050565b6001600160a01b0382166000908152600660205260409020811561151a5760008160020154426114b89190611eed565b6003546001600160a01b0386166000908152600c6020526040812054855493945090928492916114e791611eed565b6114f19190611f16565b6114fb9190611f16565b905080836003015461150d9190611f4f565b600384015550610f5d9050565b60006003820155505050565b333214611319573360009081526005602052604090205460ff166113195760405162461bcd60e51b815260206004820152604960248201527f76655661756c74656467653a2075706461746528292063616e206f6e6c79206260448201527f652063616c6c656420627920454f4173206f722077686974656c69737465642060648201527f636f6e7472616374730000000000000000000000000000000000000000000000608482015260a401610400565b60008060008060008551905060005b818110156116805786818151811061160157611601611ec1565b602002602001015160400151156116425786818151811061162457611624611ec1565b6020026020010151602001518461163b9190611f4f565b935061166e565b86818151811061165457611654611ec1565b6020026020010151602001518361166b9190611f4f565b92505b8061167881611f7b565b9150506115e7565b5061168b8383611ad1565b94509450505050915091565b6001600160a01b0382166000908152600660205260408120825190915b818110156114815760008482815181106116d0576116d0611ec1565b602002602001015160000151905060008583815181106116f2576116f2611ec1565b6020026020010151604001519050600086848151811061171457611714611ec1565b6020026020010151602001519050811561175d576001600160a01b038316600090815260018701602052604081208054839290611752908490611f4f565b9091555061181d9050565b6001600160a01b03831660009081526001870160205260409020548111156117ed5760405162461bcd60e51b815260206004820152603660248201527f76655661756c74656467653a20696e73756666696369656e74205661756c746560448201527f646765207374616b6564206f6e207265776172646572000000000000000000006064820152608401610400565b6001600160a01b038316600090815260018701602052604081208054839290611817908490611eed565b90915550505b505050808061182b90611f7b565b9150506116b4565b8015611a4d578115611914576000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d39190611f94565b6118dc57600080fd5b808360000160008282546118f09190611f4f565b9250508190555080600260008282546119099190611f4f565b90915550611a4d9050565b825481111561198b5760405162461bcd60e51b815260206004820152603760248201527f76655661756c74656467653a20696e73756666696369656e74205661756c746560448201527f64676520666f72207573657220746f20756e7374616b650000000000000000006064820152608401610400565b8083600001600082825461199f9190611eed565b9250508190555080600260008282546119b89190611eed565b90915550506000546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190611f94565b505b6b019d971e4fe8401e740000006002541115610f5d5760405162461bcd60e51b815260206004820152603c60248201527f6d6f7265205661756c7465646765207374616b656420696e207468697320636f60448201527f6e7472616374207468616e2074686520746f74616c20737570706c79000000006064820152608401610400565b600080828410611af0576001611ae78486611eed565b91509150611b01565b6000611afc8585611eed565b915091505b9250929050565b6001600160a01b03811681146107ee57600080fd5b600060208284031215611b2f57600080fd5b8135611b3a81611b08565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015611b825783516001600160a01b031683529284019291840191600101611b5d565b50909695505050505050565b600060208284031215611ba057600080fd5b5035919050565b80151581146107ee57600080fd5b60008060408385031215611bc857600080fd5b8235611bd381611b08565b91506020830135611be381611ba7565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611c2757611c27611bee565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611bee565b604052919050565b600067ffffffffffffffff821115611c7857611c78611bee565b5060051b60200190565b60006020808385031215611c9557600080fd5b823567ffffffffffffffff811115611cac57600080fd5b8301601f81018513611cbd57600080fd5b8035611cd0611ccb82611c5e565b611c2d565b81815260059190911b82018301908381019087831115611cef57600080fd5b928401925b82841015611d16578335611d0781611b08565b82529284019290840190611cf4565b979650505050505050565b600080600060608486031215611d3657600080fd5b8335611d4181611b08565b95602085013595506040909401359392505050565b60008060408385031215611d6957600080fd5b8235611d7481611b08565b91506020830135611be381611b08565b60008060408385031215611d9757600080fd5b8235611da281611b08565b946020939093013593505050565b600080600060608486031215611dc557600080fd5b8335611dd081611b08565b92506020840135611de081611b08565b929592945050506040919091013590565b60006020808385031215611e0457600080fd5b823567ffffffffffffffff811115611e1b57600080fd5b8301601f81018513611e2c57600080fd5b8035611e3a611ccb82611c5e565b81815260609182028301840191848201919088841115611e5957600080fd5b938501935b83851015611eb55780858a031215611e765760008081fd5b611e7e611c04565b8535611e8981611b08565b81528587013587820152604080870135611ea281611ba7565b9082015283529384019391850191611e5e565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610c8457610c84611ed7565b634e487b7160e01b600052603160045260246000fd5b8082028115828204841417610c8457610c84611ed7565b600082611f4a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610c8457610c84611ed7565b600060208284031215611f7457600080fd5b5051919050565b600060018201611f8d57611f8d611ed7565b5060010190565b600060208284031215611fa657600080fd5b8151611b3a81611ba756fea2646970667358221220dc5b51518802e7a0b2c0eca8fd15d525073f3bedbecaddfaeb914bb49e70457064736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
