{
  "_format": "hh-sol-artifact-1",
  "contractName": "BoostedMasterChefJoe",
  "sourceName": "contracts/BoostedMasterChefJoe.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "veJoeShareBp",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract IERC20",
          "name": "lpToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        }
      ],
      "name": "Add",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EmergencyWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Harvest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Init",
      "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": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "veJoeShareBp",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "overwrite",
          "type": "bool"
        }
      ],
      "name": "Set",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lastRewardTimestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accJoePerShare",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accJoePerFactorPerShare",
          "type": "uint256"
        }
      ],
      "name": "UpdatePool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "JOE",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MASTER_CHEF_V2",
      "outputs": [
        {
          "internalType": "contract IMasterChefJoe",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MASTER_PID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VEJOE",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint96",
          "name": "_allocPoint",
          "type": "uint96"
        },
        {
          "internalType": "uint32",
          "name": "_veJoeShareBp",
          "type": "uint32"
        },
        {
          "internalType": "contract IERC20",
          "name": "_lpToken",
          "type": "address"
        },
        {
          "internalType": "contract IRewarder",
          "name": "_rewarder",
          "type": "address"
        }
      ],
      "name": "add",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "claimableJoe",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "emergencyWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "harvestFromMasterChef",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_dummyToken",
          "type": "address"
        }
      ],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IMasterChefJoe",
          "name": "_MASTER_CHEF_V2",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_joe",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_veJoe",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_MASTER_PID",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "joePerSec",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "massUpdatePools",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "pendingTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pendingJoe",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "bonusTokenAddress",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "bonusTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "pendingBonusToken",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "poolInfo",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "lpToken",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "allocPoint",
          "type": "uint96"
        },
        {
          "internalType": "uint256",
          "name": "accJoePerShare",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accJoePerFactorPerShare",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "lastRewardTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "veJoeShareBp",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "totalFactor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalLpSupply",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pools",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint96",
          "name": "_allocPoint",
          "type": "uint96"
        },
        {
          "internalType": "uint32",
          "name": "_veJoeShareBp",
          "type": "uint32"
        },
        {
          "internalType": "contract IRewarder",
          "name": "_rewarder",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_overwrite",
          "type": "bool"
        }
      ],
      "name": "set",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAllocPoint",
      "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": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newVeJoeBalance",
          "type": "uint256"
        }
      ],
      "name": "updateFactor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "updatePool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rewardDebt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "factor",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506134bc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063630b5ba1116100de578063cf756fdf11610097578063e76fdb7e11610071578063e76fdb7e146102ed578063f2fde38b146102f5578063ffcd426314610308578063ffebad301461032b57610173565b8063cf756fdf146102b4578063d00ffa8e146102c7578063e2bbb158146102da57610173565b8063630b5ba11461025f578063715018a6146102675780638da5cb5b1461026f57806393f1a40b14610277578063980e5f9014610299578063ca418d23146102ac57610173565b80634f00a93e116101305780634f00a93e146102035780634f70b15a1461021657806351eb05a61461021e5780635312ea8e14610231578063561be05a1461024457806361621aaa1461025757610173565b8063081e3eda146101785780631526fe271461019657806317caf6f1146101be57806319ab453c146101c657806327bf88ad146101db578063441a3e70146101f0575b600080fd5b610180610333565b60405161018d9190613314565b60405180910390f35b6101a96101a4366004612cba565b610339565b60405161018d99989796959493929190612e95565b6101806103ba565b6101d96101d4366004612b0e565b6103c0565b005b6101e3610685565b60405161018d9190612e44565b6101d96101fe366004612d19565b610694565b6101d9610211366004612b2a565b610863565b6101d9610a41565b6101d961022c366004612cba565b610aa9565b6101d961023f366004612cba565b610c58565b6101d9610252366004612da1565b610e05565b6101806111e3565b6101d96111e9565b6101d961120c565b6101e361128b565b61028a610285366004612cea565b61129a565b60405161018d93929190613366565b6101d96102a7366004612d3a565b6112c6565b6101806114c6565b6101d96102c2366004612b8d565b611802565b6101806102d5366004612cea565b6118de565b6101d96102e8366004612d19565b6118fb565b6101e3611bad565b6101d9610303366004612b0e565b611bbc565b61031b610316366004612cea565b611c73565b60405161018d949392919061331d565b6101e3612058565b609b5490565b609b818154811061034657fe5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b038086169750600160a01b9095046001600160601b031695939492936001600160401b03831693600160401b84041692600160e01b900463ffffffff169189565b609e5481565b6103c8612067565b6033546001600160a01b039081169116146103fe5760405162461bcd60e51b81526004016103f590613228565b60405180910390fd5b6097546040516370a0823160e01b81526001600160a01b03838116926370a08231926104309290911690600401612e44565b60206040518083038186803b15801561044857600080fd5b505afa15801561045c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104809190612cd2565b1561049d5760405162461bcd60e51b81526004016103f590613098565b6000816001600160a01b03166370a082316104b6612067565b6040518263ffffffff1660e01b81526004016104d29190612e44565b60206040518083038186803b1580156104ea57600080fd5b505afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190612cd2565b9050806105415760405162461bcd60e51b81526004016103f59061325d565b61055e61054c612067565b6001600160a01b03841690308461206b565b60975460405163095ea7b360e01b81526001600160a01b038481169263095ea7b39261059292909116908590600401612e58565b602060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e49190612b55565b50609754609a54604051631c57762b60e31b81526001600160a01b039092169163e2bbb15891610618918590600401613358565b600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b505050507f387d06ac3b54c0ade104e08db87887286d162da416d27a605fc64e4f26c01338816040516106799190613314565b60405180910390a15050565b6097546001600160a01b031681565b600260655414156106b75760405162461bcd60e51b81526004016103f5906132dd565b60026065556106c4610a41565b6106cd82610aa9565b6000609b83815481106106dc57fe5b60009182526020808320868452609d90915260408320600690920201925081610703612067565b6001600160a01b03166001600160a01b03168152602001908152602001600020905082816000015410156107495760405162461bcd60e51b81526004016103f590613152565b80541561075b5761075b818386612164565b6107688183856000612287565b610785610773612067565b83546001600160a01b031690856123e7565b6003820154600160401b90046001600160a01b0316801561080e57806001600160a01b0316631a7af8b06107b7612067565b84546040516001600160e01b031960e085901b1681526107db929190600401612e58565b600060405180830381600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050505b84610817612067565b6001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688660405161084f9190613314565b60405180910390a350506001606555505050565b6099546001600160a01b0316610877612067565b6001600160a01b03161461089d5760405162461bcd60e51b81526004016103f590612fd7565b609b54609f5460005b82811015610a3a576000818152609d602090815260408083206001600160a01b038916845290915290208054806108de575050610a32565b6000609b84815481106108ed57fe5b9060005260206000209060060201905061090684610aa9565b60028084015460018084015492840154908601549192916000906109519061094b8b61094561093589886124d6565b61093f8c8a6124d6565b90612519565b9061253e565b90612580565b905061099c8160a060008b815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205461251990919063ffffffff16565b60a060008a815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006109e2878d6125c2565b600289018190556004870154909150610a0190869061094b9084612519565b6004870155610a218a610945610a1784876124d6565b61093f8b896124d6565b886001018190555050505050505050505b6001016108a6565b5050505050565b609754609a54604051631c57762b60e31b81526001600160a01b039092169163e2bbb15891610a7591600090600401613358565b600060405180830381600087803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b50505050565b6000609b8281548110610ab857fe5b6000918252602090912060069091020160038101549091506001600160401b031642811015610c535760058201548254600160a01b90046001600160601b03168115801590610b0657508015155b15610be45760038401546004850154609e544286900392600160e01b900463ffffffff169190600090610b4f9061094587610b49610b426114c6565b89906124d6565b906124d6565b9050610b8b610b80610b63886127106124d6565b6109458661271003610b49609f54876124d690919063ffffffff16565b60018a015490612519565b60018901558215801590610b9e57508115155b15610bdf57610bd9610bce610bb5846127106124d6565b61094586610b49609f54876124d690919063ffffffff16565b60028a015490612519565b60028901555b505050505b60038401805467ffffffffffffffff1916426001600160401b0390811691909117918290556001860154600287015460405189947f3a15998b7576ed92447b3dd03767c4977c339833be8a90fc16caa7653db12e6e94610c4894911692889261337c565b60405180910390a250505b505050565b60026065541415610c7b5760405162461bcd60e51b81526004016103f5906132dd565b60026065819055506000609b8281548110610c9257fe5b60009182526020808320858452609d90915260408320600690920201925081610cb9612067565b6001600160a01b03166001600160a01b031681526020019081526020016000209050610cf68160020154836004015461258090919063ffffffff16565b600483015580546005830154610d0b91612580565b6005830155805460008083556001830181905560028301556003830154600160401b90046001600160a01b03168015610da757806001600160a01b0316631a7af8b0610d55612067565b60006040518363ffffffff1660e01b8152600401610d74929190612e58565b600060405180830381600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050505b610dc4610db2612067565b85546001600160a01b031690846123e7565b84610dcd612067565b6001600160a01b03167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05958460405161084f9190613314565b610e0d612067565b6033546001600160a01b03908116911614610e3a5760405162461bcd60e51b81526004016103f590613228565b6001600160a01b0382166000908152609c602052604090205460ff1615610e735760405162461bcd60e51b81526004016103f590612f14565b6127108363ffffffff161115610e9b5760405162461bcd60e51b81526004016103f5906130f5565b609b5460321015610ebe5760405162461bcd60e51b81526004016103f590613054565b6001600160a01b0382166000818152609c602052604090819020805460ff19166001179055516370a0823160e01b81526370a0823190610f02903090600401612e44565b60206040518083038186803b158015610f1a57600080fd5b505afa158015610f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f529190612cd2565b506001600160a01b03811615610fc4576040516301a7af8b60e41b81526001600160a01b03821690631a7af8b090610f91906000908190600401612e58565b600060405180830381600087803b158015610fab57600080fd5b505af1158015610fbf573d6000803e3d6000fd5b505050505b610fcc6111e9565b609e54610fe2906001600160601b038616612519565b609e81905550609b604051806101200160405280846001600160a01b03168152602001866001600160601b031681526020016000815260200160008152602001426001600160401b03168152602001836001600160a01b031681526020018563ffffffff168152602001600081526020016000815250908060018154018082558091505060019003906000526020600020906006020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550604082015181600101556060820151816002015560808201518160030160006101000a8154816001600160401b0302191690836001600160401b0316021790555060a08201518160030160086101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c082015181600301601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816004015561010082015181600501555050806001600160a01b0316826001600160a01b03166001609b80549050037ffa7db60584eedcec543415482c572116ee7545102bc1e1ca9e5219ff0ea3be3287876040516111d59291906133a2565b60405180910390a450505050565b609a5481565b609b5460005b818110156112085761120081610aa9565b6001016111ef565b5050565b611214612067565b6033546001600160a01b039081169116146112415760405162461bcd60e51b81526004016103f590613228565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6033546001600160a01b031690565b609d60209081526000928352604080842090915290825290208054600182015460029092015490919083565b6112ce612067565b6033546001600160a01b039081169116146112fb5760405162461bcd60e51b81526004016103f590613228565b6127108363ffffffff1611156113235760405162461bcd60e51b81526004016103f5906130f5565b61132b6111e9565b6000609b868154811061133a57fe5b600091825260209091206006909102018054609e54919250611375916001600160601b03600160a01b90920482169161094b91908916612519565b609e5580546001600160a01b0316600160a01b6001600160601b038716021781556003810180546001600160e01b0316600160e01b63ffffffff8716021790558115611458576001600160a01b0383161561142c576040516301a7af8b60e41b81526001600160a01b03841690631a7af8b0906113f9906000908190600401612e58565b600060405180830381600087803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050505b60038101805468010000000000000000600160e01b031916600160401b6001600160a01b038616021790555b81611477576003810154600160401b90046001600160a01b0316611479565b825b6001600160a01b0316867f0db1d9531544c4edebc3104fe894a7e82c00bd1b9a676053351b0d86d4ebbd4d8787866040516114b6939291906133c1565b60405180910390a3505050505050565b6097546040805162e6b64160e31b815290516000926103e892849261164e926001600160a01b031691630735b208916004808301926020929190829003018186803b15801561151457600080fd5b505afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190612cd2565b60975460408051629df3ab60e31b8152905161094b926001600160a01b0316916304ef9d58916004808301926020929190829003018186803b15801561159157600080fd5b505afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c99190612cd2565b6097546040805163fc3c28af60e01b8152905161094b926001600160a01b03169163fc3c28af916004808301926020929190829003018186803b15801561160f57600080fd5b505afa158015611623573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116479190612cd2565b8790612580565b905060006116e08361094584609760009054906101000a90046001600160a01b03166001600160a01b031663ca418d236040518163ffffffff1660e01b815260040160206040518083038186803b1580156116a857600080fd5b505afa1580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190612cd2565b90506117fa609760009054906101000a90046001600160a01b03166001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561173357600080fd5b505afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190612cd2565b609754609a54604051631526fe2760e01b8152610945926001600160a01b031691631526fe279161179f9190600401613314565b60806040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef9190612c68565b6020015184906124d6565b935050505090565b600054610100900460ff168061181b575061181b6125cf565b80611829575060005460ff16155b6118455760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff16158015611870576000805460ff1961ff0019909116610100171660011790555b6118786125d5565b609780546001600160a01b038088166001600160a01b031992831617909255609880548784169083161790556099805492861692909116919091179055609a829055670de0b6b3a7640000609f558015610a3a576000805461ff00191690555050505050565b60a060209081526000928352604080842090915290825290205481565b6002606554141561191e5760405162461bcd60e51b81526004016103f5906132dd565b600260655561192b610a41565b61193482610aa9565b6000609b838154811061194357fe5b60009182526020808320868452609d9091526040832060069092020192508161196a612067565b6001600160a01b03168152602081019190915260400160002080549091501561199857611998818386612164565b81546040516370a0823160e01b81526000916001600160a01b0316906370a08231906119c8903090600401612e44565b60206040518083038186803b1580156119e057600080fd5b505afa1580156119f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a189190612cd2565b9050611a38611a25612067565b84546001600160a01b031690308761206b565b82546040516370a0823160e01b8152600091611abe9184916001600160a01b0316906370a0823190611a6e903090600401612e44565b60206040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b9190612cd2565b9050611acd8385836001612287565b6003840154600160401b90046001600160a01b03168015611b5657806001600160a01b0316631a7af8b0611aff612067565b86546040516001600160e01b031960e085901b168152611b23929190600401612e58565b600060405180830381600087803b158015611b3d57600080fd5b505af1158015611b51573d6000803e3d6000fd5b505050505b86611b5f612067565b6001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1584604051611b979190613314565b60405180910390a3505060016065555050505050565b6099546001600160a01b031681565b611bc4612067565b6033546001600160a01b03908116911614611bf15760405162461bcd60e51b81526004016103f590613228565b6001600160a01b038116611c175760405162461bcd60e51b81526004016103f590612f91565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b60008060606000611c82612aa1565b609b8781548110611c8f57fe5b6000918252602091829020604080516101208101825260069390930290910180546001600160a01b038082168552600160a01b9091046001600160601b0316948401949094526001810154918301919091526002810154606083015260038101546001600160401b0381166080840152600160401b810490931660a0830152600160e01b90920463ffffffff1660c0820152600482015460e08201526005909101546101008201529050611d41612aed565b506000878152609d602090815260408083206001600160a01b038a1684528252918290208251606080820185528254825260018301549382019390935260029091015481840152918301519083015160808401516001600160401b031642118015611db0575061010084015115155b8015611dc8575060208401516001600160601b031615155b15611ed057600084608001516001600160401b0316420390506000611e0c609e5461094588602001516001600160601b0316610b49611e056114c6565b87906124d6565b9050611e5c611e55611e2e6127108961010001516124d690919063ffffffff16565b6109458960c001516127100363ffffffff16610b49609f54876124d690919063ffffffff16565b8590612519565b93508560c0015163ffffffff16600014158015611e7c575060e086015115155b15611ecd57611eca611ec3611ea06127108960e001516124d690919063ffffffff16565b6109458960c0015163ffffffff16610b49609f54876124d690919063ffffffff16565b8490612519565b92505b50505b60208084015160008c815260a0835260408082206001600160a01b038e16835290935282902054609f5492860151611f269361094b929161093f919061094590611f1a90896124d6565b8a5161093f908b6124d6565b60a08501519098506001600160a01b03161561204b578360a001516001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7957600080fd5b505afa158015611f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb19190612b71565b9650611fc5876001600160a01b0316612668565b60a085015160405163c031a66f60e01b81529197506001600160a01b03169063c031a66f90611ff8908c90600401612e44565b60206040518083038186803b15801561201057600080fd5b505afa158015612024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120489190612cd2565b94505b5050505092959194509250565b6098546001600160a01b031681565b3390565b60006060856001600160a01b03166323b872dd60e01b86868660405160240161209693929190612e71565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120d49190612e28565b6000604051808303816000865af19150503d8060008114612111576040519150601f19603f3d011682016040523d82523d6000602084013e612116565b606091505b50915091508180156121405750805115806121405750808060200190518101906121409190612b55565b61215c5760405162461bcd60e51b81526004016103f5906132a8565b505050505050565b6001830154600082815260a06020526040812090916121df9161094b908461218a612067565b6001600160a01b03166001600160a01b031681526020019081526020016000205461093f609f546109456121cf8a600201548c600201546124d690919063ffffffff16565b60018b01548c5461093f916124d6565b600083815260a06020526040812091925090816121fa612067565b6001600160a01b031681526020810191909152604001600020558015610aa357612238612225612067565b6098546001600160a01b031690836123e7565b81612241612067565b6001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516122799190613314565b60405180910390a350505050565b835460008261229f5761229a8285612580565b6122a9565b6122a98285612519565b905083156122e257808655826122cd5760058501546122c89085612580565b6122dc565b60058501546122dc9085612519565b60058601555b600286015460995460009061237a9084906001600160a01b03166370a08231612309612067565b6040518263ffffffff1660e01b81526004016123259190612e44565b60206040518083038186803b15801561233d57600080fd5b505afa158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190612cd2565b6125c2565b90508082146123a55760028801819055600487015461239f90839061094b9084612519565b60048801555b6123d5609f546109456123c58a60020154856124d690919063ffffffff16565b60018b015461093f9088906124d6565b88600101819055505050505050505050565b60006060846001600160a01b031663a9059cbb60e01b8585604051602401612410929190612e58565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161244e9190612e28565b6000604051808303816000865af19150503d806000811461248b576040519150601f19603f3d011682016040523d82523d6000602084013e612490565b606091505b50915091508180156124ba5750805115806124ba5750808060200190518101906124ba9190612b55565b610a3a5760405162461bcd60e51b81526004016103f590612f5a565b6000826124e557506000612513565b828202828482816124f257fe5b04146125105760405162461bcd60e51b81526004016103f5906131e7565b90505b92915050565b6000828201838110156125105760405162461bcd60e51b81526004016103f59061301d565b600061251083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061272d565b600061251083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612764565b6000612510828402612790565b303b1590565b600054610100900460ff16806125ee57506125ee6125cf565b806125fc575060005460ff16155b6126185760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff16158015612643576000805460ff1961ff0019909116610100171660011790555b61264b6127e1565b612653612862565b8015612665576000805461ff00191690555b50565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009183916001600160a01b038616916126af9190612e28565b600060405180830381855afa9150503d80600081146126ea576040519150601f19603f3d011682016040523d82523d6000602084013e6126ef565b606091505b50915091508161271a57604051806040016040528060038152602001623f3f3f60e81b815250612723565b6127238161293c565b925050505b919050565b6000818361274e5760405162461bcd60e51b81526004016103f59190612f01565b50600083858161275a57fe5b0495945050505050565b600081848411156127885760405162461bcd60e51b81526004016103f59190612f01565b505050900390565b600060038211156127d3575080600160028204015b818110156127cd578091506002818285816127bc57fe5b0401816127c557fe5b0490506127a5565b50612728565b811561272857506001919050565b600054610100900460ff16806127fa57506127fa6125cf565b80612808575060005460ff16155b6128245760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff16158015612653576000805460ff1961ff0019909116610100171660011790558015612665576000805461ff001916905550565b600054610100900460ff168061287b575061287b6125cf565b80612889575060005460ff16155b6128a55760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff161580156128d0576000805460ff1961ff0019909116610100171660011790555b60006128da612067565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612665576000805461ff001916905550565b60606040825110612962578180602001905181019061295b9190612bdd565b9050612728565b815160201415612a815760005b60208160ff1610801561299e5750828160ff168151811061298c57fe5b01602001516001600160f81b03191615155b156129ab5760010161296f565b60608160ff166001600160401b03811180156129c657600080fd5b506040519080825280601f01601f1916602001820160405280156129f1576020820181803683370190505b509050600091505b60208260ff16108015612a285750838260ff1681518110612a1657fe5b01602001516001600160f81b03191615155b15612a7857838260ff1681518110612a3c57fe5b602001015160f81c60f81b818360ff1681518110612a5657fe5b60200101906001600160f81b031916908160001a9053506001909101906129f9565b91506127289050565b506040805180820190915260038152623f3f3f60e81b6020820152612728565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60405180606001604052806000815260200160008152602001600081525090565b600060208284031215612b1f578081fd5b81356125108161343c565b60008060408385031215612b3c578081fd5b8235612b478161343c565b946020939093013593505050565b600060208284031215612b66578081fd5b815161251081613451565b600060208284031215612b82578081fd5b81516125108161343c565b60008060008060808587031215612ba2578182fd5b8435612bad8161343c565b93506020850135612bbd8161343c565b92506040850135612bcd8161343c565b9396929550929360600135925050565b600060208284031215612bee578081fd5b81516001600160401b0380821115612c04578283fd5b818401915084601f830112612c17578283fd5b815181811115612c25578384fd5b612c38601f8201601f19166020016133ea565b9150808252856020828501011115612c4e578384fd5b612c5f816020840160208601613410565b50949350505050565b600060808284031215612c79578081fd5b612c8360806133ea565b8251612c8e8161343c565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612ccb578081fd5b5035919050565b600060208284031215612ce3578081fd5b5051919050565b60008060408385031215612cfc578182fd5b823591506020830135612d0e8161343c565b809150509250929050565b60008060408385031215612d2b578182fd5b50508035926020909101359150565b600080600080600060a08688031215612d51578081fd5b853594506020860135612d6381613471565b93506040860135612d738161345f565b92506060860135612d838161343c565b91506080860135612d9381613451565b809150509295509295909350565b60008060008060808587031215612db6578182fd5b8435612dc181613471565b93506020850135612dd18161345f565b92506040850135612de18161343c565b91506060850135612df18161343c565b939692955090935050565b60008151808452612e14816020860160208601613410565b601f01601f19169290920160200192915050565b60008251612e3a818460208701613410565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03998a1681526001600160601b03989098166020890152604088019690965260608701949094526001600160401b0392909216608086015290941660a084015263ffffffff90931660c083015260e08201929092526101008101919091526101200190565b6000602082526125106020830184612dfc565b60208082526026908201527f426f6f737465644d6173746572436865664a6f653a204c5020616c726561647960408201526508185919195960d21b606082015260800190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526026908201527f426f6f737465644d6173746572436865664a6f653a2043616c6c6572206e6f746040820152652076654a4f4560d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526024908201527f426f6f737465644d6173746572436865664a6f653a20546f6f206d616e7920706040820152636f6f6c7360e01b606082015260800190565b6020808252603a908201527f426f6f737465644d6173746572436865664a6f653a20416c726561647920686160408201527f7320612062616c616e6365206f662064756d6d7920746f6b656e000000000000606082015260800190565b6020808252603f908201527f426f6f737465644d6173746572436865664a6f653a2076654a6f65536861726560408201527f4270206e6565647320746f206265206c6f776572207468616e20313030303000606082015260800190565b60208082526027908201527f426f6f737465644d6173746572436865664a6f653a207769746864726177206e6040820152661bdd0819dbdbd960ca1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f426f6f737465644d6173746572436865664a6f653a2042616c616e6365206d7560408201526a073742065786365656420360ac1b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b8481526001600160a01b038416602082015260806040820181905260009061334790830185612dfc565b905082606083015295945050505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b6001600160401b0394909416845260208401929092526040830152606082015260800190565b6001600160601b0392909216825263ffffffff16602082015260400190565b6001600160601b0393909316835263ffffffff9190911660208301521515604082015260600190565b6040518181016001600160401b038111828210171561340857600080fd5b604052919050565b60005b8381101561342b578181015183820152602001613413565b83811115610aa35750506000910152565b6001600160a01b038116811461266557600080fd5b801515811461266557600080fd5b63ffffffff8116811461266557600080fd5b6001600160601b038116811461266557600080fdfea264697066735822122046a557f14befc0912d9851bc01cca182e6d9c1390352f8596639e51cbf1cafef64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063630b5ba1116100de578063cf756fdf11610097578063e76fdb7e11610071578063e76fdb7e146102ed578063f2fde38b146102f5578063ffcd426314610308578063ffebad301461032b57610173565b8063cf756fdf146102b4578063d00ffa8e146102c7578063e2bbb158146102da57610173565b8063630b5ba11461025f578063715018a6146102675780638da5cb5b1461026f57806393f1a40b14610277578063980e5f9014610299578063ca418d23146102ac57610173565b80634f00a93e116101305780634f00a93e146102035780634f70b15a1461021657806351eb05a61461021e5780635312ea8e14610231578063561be05a1461024457806361621aaa1461025757610173565b8063081e3eda146101785780631526fe271461019657806317caf6f1146101be57806319ab453c146101c657806327bf88ad146101db578063441a3e70146101f0575b600080fd5b610180610333565b60405161018d9190613314565b60405180910390f35b6101a96101a4366004612cba565b610339565b60405161018d99989796959493929190612e95565b6101806103ba565b6101d96101d4366004612b0e565b6103c0565b005b6101e3610685565b60405161018d9190612e44565b6101d96101fe366004612d19565b610694565b6101d9610211366004612b2a565b610863565b6101d9610a41565b6101d961022c366004612cba565b610aa9565b6101d961023f366004612cba565b610c58565b6101d9610252366004612da1565b610e05565b6101806111e3565b6101d96111e9565b6101d961120c565b6101e361128b565b61028a610285366004612cea565b61129a565b60405161018d93929190613366565b6101d96102a7366004612d3a565b6112c6565b6101806114c6565b6101d96102c2366004612b8d565b611802565b6101806102d5366004612cea565b6118de565b6101d96102e8366004612d19565b6118fb565b6101e3611bad565b6101d9610303366004612b0e565b611bbc565b61031b610316366004612cea565b611c73565b60405161018d949392919061331d565b6101e3612058565b609b5490565b609b818154811061034657fe5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b038086169750600160a01b9095046001600160601b031695939492936001600160401b03831693600160401b84041692600160e01b900463ffffffff169189565b609e5481565b6103c8612067565b6033546001600160a01b039081169116146103fe5760405162461bcd60e51b81526004016103f590613228565b60405180910390fd5b6097546040516370a0823160e01b81526001600160a01b03838116926370a08231926104309290911690600401612e44565b60206040518083038186803b15801561044857600080fd5b505afa15801561045c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104809190612cd2565b1561049d5760405162461bcd60e51b81526004016103f590613098565b6000816001600160a01b03166370a082316104b6612067565b6040518263ffffffff1660e01b81526004016104d29190612e44565b60206040518083038186803b1580156104ea57600080fd5b505afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190612cd2565b9050806105415760405162461bcd60e51b81526004016103f59061325d565b61055e61054c612067565b6001600160a01b03841690308461206b565b60975460405163095ea7b360e01b81526001600160a01b038481169263095ea7b39261059292909116908590600401612e58565b602060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e49190612b55565b50609754609a54604051631c57762b60e31b81526001600160a01b039092169163e2bbb15891610618918590600401613358565b600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b505050507f387d06ac3b54c0ade104e08db87887286d162da416d27a605fc64e4f26c01338816040516106799190613314565b60405180910390a15050565b6097546001600160a01b031681565b600260655414156106b75760405162461bcd60e51b81526004016103f5906132dd565b60026065556106c4610a41565b6106cd82610aa9565b6000609b83815481106106dc57fe5b60009182526020808320868452609d90915260408320600690920201925081610703612067565b6001600160a01b03166001600160a01b03168152602001908152602001600020905082816000015410156107495760405162461bcd60e51b81526004016103f590613152565b80541561075b5761075b818386612164565b6107688183856000612287565b610785610773612067565b83546001600160a01b031690856123e7565b6003820154600160401b90046001600160a01b0316801561080e57806001600160a01b0316631a7af8b06107b7612067565b84546040516001600160e01b031960e085901b1681526107db929190600401612e58565b600060405180830381600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050505b84610817612067565b6001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688660405161084f9190613314565b60405180910390a350506001606555505050565b6099546001600160a01b0316610877612067565b6001600160a01b03161461089d5760405162461bcd60e51b81526004016103f590612fd7565b609b54609f5460005b82811015610a3a576000818152609d602090815260408083206001600160a01b038916845290915290208054806108de575050610a32565b6000609b84815481106108ed57fe5b9060005260206000209060060201905061090684610aa9565b60028084015460018084015492840154908601549192916000906109519061094b8b61094561093589886124d6565b61093f8c8a6124d6565b90612519565b9061253e565b90612580565b905061099c8160a060008b815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205461251990919063ffffffff16565b60a060008a815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006109e2878d6125c2565b600289018190556004870154909150610a0190869061094b9084612519565b6004870155610a218a610945610a1784876124d6565b61093f8b896124d6565b886001018190555050505050505050505b6001016108a6565b5050505050565b609754609a54604051631c57762b60e31b81526001600160a01b039092169163e2bbb15891610a7591600090600401613358565b600060405180830381600087803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b50505050565b6000609b8281548110610ab857fe5b6000918252602090912060069091020160038101549091506001600160401b031642811015610c535760058201548254600160a01b90046001600160601b03168115801590610b0657508015155b15610be45760038401546004850154609e544286900392600160e01b900463ffffffff169190600090610b4f9061094587610b49610b426114c6565b89906124d6565b906124d6565b9050610b8b610b80610b63886127106124d6565b6109458661271003610b49609f54876124d690919063ffffffff16565b60018a015490612519565b60018901558215801590610b9e57508115155b15610bdf57610bd9610bce610bb5846127106124d6565b61094586610b49609f54876124d690919063ffffffff16565b60028a015490612519565b60028901555b505050505b60038401805467ffffffffffffffff1916426001600160401b0390811691909117918290556001860154600287015460405189947f3a15998b7576ed92447b3dd03767c4977c339833be8a90fc16caa7653db12e6e94610c4894911692889261337c565b60405180910390a250505b505050565b60026065541415610c7b5760405162461bcd60e51b81526004016103f5906132dd565b60026065819055506000609b8281548110610c9257fe5b60009182526020808320858452609d90915260408320600690920201925081610cb9612067565b6001600160a01b03166001600160a01b031681526020019081526020016000209050610cf68160020154836004015461258090919063ffffffff16565b600483015580546005830154610d0b91612580565b6005830155805460008083556001830181905560028301556003830154600160401b90046001600160a01b03168015610da757806001600160a01b0316631a7af8b0610d55612067565b60006040518363ffffffff1660e01b8152600401610d74929190612e58565b600060405180830381600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505050505b610dc4610db2612067565b85546001600160a01b031690846123e7565b84610dcd612067565b6001600160a01b03167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05958460405161084f9190613314565b610e0d612067565b6033546001600160a01b03908116911614610e3a5760405162461bcd60e51b81526004016103f590613228565b6001600160a01b0382166000908152609c602052604090205460ff1615610e735760405162461bcd60e51b81526004016103f590612f14565b6127108363ffffffff161115610e9b5760405162461bcd60e51b81526004016103f5906130f5565b609b5460321015610ebe5760405162461bcd60e51b81526004016103f590613054565b6001600160a01b0382166000818152609c602052604090819020805460ff19166001179055516370a0823160e01b81526370a0823190610f02903090600401612e44565b60206040518083038186803b158015610f1a57600080fd5b505afa158015610f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f529190612cd2565b506001600160a01b03811615610fc4576040516301a7af8b60e41b81526001600160a01b03821690631a7af8b090610f91906000908190600401612e58565b600060405180830381600087803b158015610fab57600080fd5b505af1158015610fbf573d6000803e3d6000fd5b505050505b610fcc6111e9565b609e54610fe2906001600160601b038616612519565b609e81905550609b604051806101200160405280846001600160a01b03168152602001866001600160601b031681526020016000815260200160008152602001426001600160401b03168152602001836001600160a01b031681526020018563ffffffff168152602001600081526020016000815250908060018154018082558091505060019003906000526020600020906006020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550604082015181600101556060820151816002015560808201518160030160006101000a8154816001600160401b0302191690836001600160401b0316021790555060a08201518160030160086101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c082015181600301601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816004015561010082015181600501555050806001600160a01b0316826001600160a01b03166001609b80549050037ffa7db60584eedcec543415482c572116ee7545102bc1e1ca9e5219ff0ea3be3287876040516111d59291906133a2565b60405180910390a450505050565b609a5481565b609b5460005b818110156112085761120081610aa9565b6001016111ef565b5050565b611214612067565b6033546001600160a01b039081169116146112415760405162461bcd60e51b81526004016103f590613228565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6033546001600160a01b031690565b609d60209081526000928352604080842090915290825290208054600182015460029092015490919083565b6112ce612067565b6033546001600160a01b039081169116146112fb5760405162461bcd60e51b81526004016103f590613228565b6127108363ffffffff1611156113235760405162461bcd60e51b81526004016103f5906130f5565b61132b6111e9565b6000609b868154811061133a57fe5b600091825260209091206006909102018054609e54919250611375916001600160601b03600160a01b90920482169161094b91908916612519565b609e5580546001600160a01b0316600160a01b6001600160601b038716021781556003810180546001600160e01b0316600160e01b63ffffffff8716021790558115611458576001600160a01b0383161561142c576040516301a7af8b60e41b81526001600160a01b03841690631a7af8b0906113f9906000908190600401612e58565b600060405180830381600087803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050505b60038101805468010000000000000000600160e01b031916600160401b6001600160a01b038616021790555b81611477576003810154600160401b90046001600160a01b0316611479565b825b6001600160a01b0316867f0db1d9531544c4edebc3104fe894a7e82c00bd1b9a676053351b0d86d4ebbd4d8787866040516114b6939291906133c1565b60405180910390a3505050505050565b6097546040805162e6b64160e31b815290516000926103e892849261164e926001600160a01b031691630735b208916004808301926020929190829003018186803b15801561151457600080fd5b505afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190612cd2565b60975460408051629df3ab60e31b8152905161094b926001600160a01b0316916304ef9d58916004808301926020929190829003018186803b15801561159157600080fd5b505afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c99190612cd2565b6097546040805163fc3c28af60e01b8152905161094b926001600160a01b03169163fc3c28af916004808301926020929190829003018186803b15801561160f57600080fd5b505afa158015611623573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116479190612cd2565b8790612580565b905060006116e08361094584609760009054906101000a90046001600160a01b03166001600160a01b031663ca418d236040518163ffffffff1660e01b815260040160206040518083038186803b1580156116a857600080fd5b505afa1580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190612cd2565b90506117fa609760009054906101000a90046001600160a01b03166001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561173357600080fd5b505afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b9190612cd2565b609754609a54604051631526fe2760e01b8152610945926001600160a01b031691631526fe279161179f9190600401613314565b60806040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef9190612c68565b6020015184906124d6565b935050505090565b600054610100900460ff168061181b575061181b6125cf565b80611829575060005460ff16155b6118455760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff16158015611870576000805460ff1961ff0019909116610100171660011790555b6118786125d5565b609780546001600160a01b038088166001600160a01b031992831617909255609880548784169083161790556099805492861692909116919091179055609a829055670de0b6b3a7640000609f558015610a3a576000805461ff00191690555050505050565b60a060209081526000928352604080842090915290825290205481565b6002606554141561191e5760405162461bcd60e51b81526004016103f5906132dd565b600260655561192b610a41565b61193482610aa9565b6000609b838154811061194357fe5b60009182526020808320868452609d9091526040832060069092020192508161196a612067565b6001600160a01b03168152602081019190915260400160002080549091501561199857611998818386612164565b81546040516370a0823160e01b81526000916001600160a01b0316906370a08231906119c8903090600401612e44565b60206040518083038186803b1580156119e057600080fd5b505afa1580156119f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a189190612cd2565b9050611a38611a25612067565b84546001600160a01b031690308761206b565b82546040516370a0823160e01b8152600091611abe9184916001600160a01b0316906370a0823190611a6e903090600401612e44565b60206040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b9190612cd2565b9050611acd8385836001612287565b6003840154600160401b90046001600160a01b03168015611b5657806001600160a01b0316631a7af8b0611aff612067565b86546040516001600160e01b031960e085901b168152611b23929190600401612e58565b600060405180830381600087803b158015611b3d57600080fd5b505af1158015611b51573d6000803e3d6000fd5b505050505b86611b5f612067565b6001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1584604051611b979190613314565b60405180910390a3505060016065555050505050565b6099546001600160a01b031681565b611bc4612067565b6033546001600160a01b03908116911614611bf15760405162461bcd60e51b81526004016103f590613228565b6001600160a01b038116611c175760405162461bcd60e51b81526004016103f590612f91565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b60008060606000611c82612aa1565b609b8781548110611c8f57fe5b6000918252602091829020604080516101208101825260069390930290910180546001600160a01b038082168552600160a01b9091046001600160601b0316948401949094526001810154918301919091526002810154606083015260038101546001600160401b0381166080840152600160401b810490931660a0830152600160e01b90920463ffffffff1660c0820152600482015460e08201526005909101546101008201529050611d41612aed565b506000878152609d602090815260408083206001600160a01b038a1684528252918290208251606080820185528254825260018301549382019390935260029091015481840152918301519083015160808401516001600160401b031642118015611db0575061010084015115155b8015611dc8575060208401516001600160601b031615155b15611ed057600084608001516001600160401b0316420390506000611e0c609e5461094588602001516001600160601b0316610b49611e056114c6565b87906124d6565b9050611e5c611e55611e2e6127108961010001516124d690919063ffffffff16565b6109458960c001516127100363ffffffff16610b49609f54876124d690919063ffffffff16565b8590612519565b93508560c0015163ffffffff16600014158015611e7c575060e086015115155b15611ecd57611eca611ec3611ea06127108960e001516124d690919063ffffffff16565b6109458960c0015163ffffffff16610b49609f54876124d690919063ffffffff16565b8490612519565b92505b50505b60208084015160008c815260a0835260408082206001600160a01b038e16835290935282902054609f5492860151611f269361094b929161093f919061094590611f1a90896124d6565b8a5161093f908b6124d6565b60a08501519098506001600160a01b03161561204b578360a001516001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7957600080fd5b505afa158015611f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb19190612b71565b9650611fc5876001600160a01b0316612668565b60a085015160405163c031a66f60e01b81529197506001600160a01b03169063c031a66f90611ff8908c90600401612e44565b60206040518083038186803b15801561201057600080fd5b505afa158015612024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120489190612cd2565b94505b5050505092959194509250565b6098546001600160a01b031681565b3390565b60006060856001600160a01b03166323b872dd60e01b86868660405160240161209693929190612e71565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120d49190612e28565b6000604051808303816000865af19150503d8060008114612111576040519150601f19603f3d011682016040523d82523d6000602084013e612116565b606091505b50915091508180156121405750805115806121405750808060200190518101906121409190612b55565b61215c5760405162461bcd60e51b81526004016103f5906132a8565b505050505050565b6001830154600082815260a06020526040812090916121df9161094b908461218a612067565b6001600160a01b03166001600160a01b031681526020019081526020016000205461093f609f546109456121cf8a600201548c600201546124d690919063ffffffff16565b60018b01548c5461093f916124d6565b600083815260a06020526040812091925090816121fa612067565b6001600160a01b031681526020810191909152604001600020558015610aa357612238612225612067565b6098546001600160a01b031690836123e7565b81612241612067565b6001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516122799190613314565b60405180910390a350505050565b835460008261229f5761229a8285612580565b6122a9565b6122a98285612519565b905083156122e257808655826122cd5760058501546122c89085612580565b6122dc565b60058501546122dc9085612519565b60058601555b600286015460995460009061237a9084906001600160a01b03166370a08231612309612067565b6040518263ffffffff1660e01b81526004016123259190612e44565b60206040518083038186803b15801561233d57600080fd5b505afa158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190612cd2565b6125c2565b90508082146123a55760028801819055600487015461239f90839061094b9084612519565b60048801555b6123d5609f546109456123c58a60020154856124d690919063ffffffff16565b60018b015461093f9088906124d6565b88600101819055505050505050505050565b60006060846001600160a01b031663a9059cbb60e01b8585604051602401612410929190612e58565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161244e9190612e28565b6000604051808303816000865af19150503d806000811461248b576040519150601f19603f3d011682016040523d82523d6000602084013e612490565b606091505b50915091508180156124ba5750805115806124ba5750808060200190518101906124ba9190612b55565b610a3a5760405162461bcd60e51b81526004016103f590612f5a565b6000826124e557506000612513565b828202828482816124f257fe5b04146125105760405162461bcd60e51b81526004016103f5906131e7565b90505b92915050565b6000828201838110156125105760405162461bcd60e51b81526004016103f59061301d565b600061251083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061272d565b600061251083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612764565b6000612510828402612790565b303b1590565b600054610100900460ff16806125ee57506125ee6125cf565b806125fc575060005460ff16155b6126185760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff16158015612643576000805460ff1961ff0019909116610100171660011790555b61264b6127e1565b612653612862565b8015612665576000805461ff00191690555b50565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009183916001600160a01b038616916126af9190612e28565b600060405180830381855afa9150503d80600081146126ea576040519150601f19603f3d011682016040523d82523d6000602084013e6126ef565b606091505b50915091508161271a57604051806040016040528060038152602001623f3f3f60e81b815250612723565b6127238161293c565b925050505b919050565b6000818361274e5760405162461bcd60e51b81526004016103f59190612f01565b50600083858161275a57fe5b0495945050505050565b600081848411156127885760405162461bcd60e51b81526004016103f59190612f01565b505050900390565b600060038211156127d3575080600160028204015b818110156127cd578091506002818285816127bc57fe5b0401816127c557fe5b0490506127a5565b50612728565b811561272857506001919050565b600054610100900460ff16806127fa57506127fa6125cf565b80612808575060005460ff16155b6128245760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff16158015612653576000805460ff1961ff0019909116610100171660011790558015612665576000805461ff001916905550565b600054610100900460ff168061287b575061287b6125cf565b80612889575060005460ff16155b6128a55760405162461bcd60e51b81526004016103f590613199565b600054610100900460ff161580156128d0576000805460ff1961ff0019909116610100171660011790555b60006128da612067565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612665576000805461ff001916905550565b60606040825110612962578180602001905181019061295b9190612bdd565b9050612728565b815160201415612a815760005b60208160ff1610801561299e5750828160ff168151811061298c57fe5b01602001516001600160f81b03191615155b156129ab5760010161296f565b60608160ff166001600160401b03811180156129c657600080fd5b506040519080825280601f01601f1916602001820160405280156129f1576020820181803683370190505b509050600091505b60208260ff16108015612a285750838260ff1681518110612a1657fe5b01602001516001600160f81b03191615155b15612a7857838260ff1681518110612a3c57fe5b602001015160f81c60f81b818360ff1681518110612a5657fe5b60200101906001600160f81b031916908160001a9053506001909101906129f9565b91506127289050565b506040805180820190915260038152623f3f3f60e81b6020820152612728565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60405180606001604052806000815260200160008152602001600081525090565b600060208284031215612b1f578081fd5b81356125108161343c565b60008060408385031215612b3c578081fd5b8235612b478161343c565b946020939093013593505050565b600060208284031215612b66578081fd5b815161251081613451565b600060208284031215612b82578081fd5b81516125108161343c565b60008060008060808587031215612ba2578182fd5b8435612bad8161343c565b93506020850135612bbd8161343c565b92506040850135612bcd8161343c565b9396929550929360600135925050565b600060208284031215612bee578081fd5b81516001600160401b0380821115612c04578283fd5b818401915084601f830112612c17578283fd5b815181811115612c25578384fd5b612c38601f8201601f19166020016133ea565b9150808252856020828501011115612c4e578384fd5b612c5f816020840160208601613410565b50949350505050565b600060808284031215612c79578081fd5b612c8360806133ea565b8251612c8e8161343c565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612ccb578081fd5b5035919050565b600060208284031215612ce3578081fd5b5051919050565b60008060408385031215612cfc578182fd5b823591506020830135612d0e8161343c565b809150509250929050565b60008060408385031215612d2b578182fd5b50508035926020909101359150565b600080600080600060a08688031215612d51578081fd5b853594506020860135612d6381613471565b93506040860135612d738161345f565b92506060860135612d838161343c565b91506080860135612d9381613451565b809150509295509295909350565b60008060008060808587031215612db6578182fd5b8435612dc181613471565b93506020850135612dd18161345f565b92506040850135612de18161343c565b91506060850135612df18161343c565b939692955090935050565b60008151808452612e14816020860160208601613410565b601f01601f19169290920160200192915050565b60008251612e3a818460208701613410565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03998a1681526001600160601b03989098166020890152604088019690965260608701949094526001600160401b0392909216608086015290941660a084015263ffffffff90931660c083015260e08201929092526101008101919091526101200190565b6000602082526125106020830184612dfc565b60208082526026908201527f426f6f737465644d6173746572436865664a6f653a204c5020616c726561647960408201526508185919195960d21b606082015260800190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526026908201527f426f6f737465644d6173746572436865664a6f653a2043616c6c6572206e6f746040820152652076654a4f4560d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526024908201527f426f6f737465644d6173746572436865664a6f653a20546f6f206d616e7920706040820152636f6f6c7360e01b606082015260800190565b6020808252603a908201527f426f6f737465644d6173746572436865664a6f653a20416c726561647920686160408201527f7320612062616c616e6365206f662064756d6d7920746f6b656e000000000000606082015260800190565b6020808252603f908201527f426f6f737465644d6173746572436865664a6f653a2076654a6f65536861726560408201527f4270206e6565647320746f206265206c6f776572207468616e20313030303000606082015260800190565b60208082526027908201527f426f6f737465644d6173746572436865664a6f653a207769746864726177206e6040820152661bdd0819dbdbd960ca1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f426f6f737465644d6173746572436865664a6f653a2042616c616e6365206d7560408201526a073742065786365656420360ac1b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b8481526001600160a01b038416602082015260806040820181905260009061334790830185612dfc565b905082606083015295945050505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b6001600160401b0394909416845260208401929092526040830152606082015260800190565b6001600160601b0392909216825263ffffffff16602082015260400190565b6001600160601b0393909316835263ffffffff9190911660208301521515604082015260600190565b6040518181016001600160401b038111828210171561340857600080fd5b604052919050565b60005b8381101561342b578181015183820152602001613413565b83811115610aa35750506000910152565b6001600160a01b038116811461266557600080fd5b801515811461266557600080fd5b63ffffffff8116811461266557600080fd5b6001600160601b038116811461266557600080fdfea264697066735822122046a557f14befc0912d9851bc01cca182e6d9c1390352f8596639e51cbf1cafef64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
