{
  "_format": "hh-sol-artifact-1",
  "contractName": "FarmLens",
  "sourceName": "contracts/traderjoe/FarmLens.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "joe_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "wavax_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "wavaxUsdt_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "wavaxUsdc_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "wavaxDai_",
          "type": "address"
        },
        {
          "internalType": "contract IJoeFactory",
          "name": "joeFactory_",
          "type": "address"
        },
        {
          "internalType": "contract IMasterChef",
          "name": "chefv2_",
          "type": "address"
        },
        {
          "internalType": "contract IMasterChef",
          "name": "chefv3_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "chefv2",
      "outputs": [
        {
          "internalType": "contract IMasterChef",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "chefv3",
      "outputs": [
        {
          "internalType": "contract IMasterChef",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "whitelistedPidsV2",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "whitelistedPidsV3",
          "type": "uint256[]"
        }
      ],
      "name": "getAllFarmData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "avaxPriceUsd",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "joePriceUsd",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalAllocChefV2",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalAllocChefV3",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "joePerSecChefV2",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "joePerSecChefV3",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "lpAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token0Address",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1Address",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "token0Symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "token1Symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveUsd",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalSupplyScaled",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "chefAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "chefBalanceScaled",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "chefTotalAlloc",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "chefJoePerSec",
                  "type": "uint256"
                }
              ],
              "internalType": "struct FarmLens.FarmPair[]",
              "name": "farmPairsV2",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "lpAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token0Address",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1Address",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "token0Symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "token1Symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveUsd",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalSupplyScaled",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "chefAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "chefBalanceScaled",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "chefTotalAlloc",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "chefJoePerSec",
                  "type": "uint256"
                }
              ],
              "internalType": "struct FarmLens.FarmPair[]",
              "name": "farmPairsV3",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct FarmLens.AllFarmData",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAvaxPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "chefAddress",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "whitelistedPids",
          "type": "uint256[]"
        }
      ],
      "name": "getFarmPairs",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "allocPoint",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "lpAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0Address",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1Address",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "token0Symbol",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "token1Symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "reserveUsd",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalSupplyScaled",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "chefAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "chefBalanceScaled",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "chefTotalAlloc",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "chefJoePerSec",
              "type": "uint256"
            }
          ],
          "internalType": "struct FarmLens.FarmPair[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "getPriceInAvax",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "getPriceInUsd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IJoePair",
          "name": "pair",
          "type": "address"
        }
      ],
      "name": "getReserveUsd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "joe",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "joeFactory",
      "outputs": [
        {
          "internalType": "contract IJoeFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "renounce",
          "type": "bool"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "wavax",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "wavaxDai",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "wavaxUsdc",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "wavaxUsdt",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200200c3803806200200c833981016040819052620000349162000105565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600280546001600160a01b03199081166001600160a01b039a8b1617909155600380548216988a1698909817909755600480548816968916969096179095556005805487169488169490941790935560068054861692871692909217909155600780548516918616919091179055600880548416918516919091179055600980549092169216919091179055620001de565b600080600080600080600080610100898b03121562000122578384fd5b88516200012f81620001c5565b60208a01519098506200014281620001c5565b60408a01519097506200015581620001c5565b60608a01519096506200016881620001c5565b60808a01519095506200017b81620001c5565b60a08a01519094506200018e81620001c5565b60c08a0151909350620001a181620001c5565b60e08a0151909250620001b481620001c5565b809150509295985092959890939650565b6001600160a01b0381168114620001db57600080fd5b50565b611e1e80620001ee6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806387dabe46116100a2578063c500e21411610071578063c500e214146101d6578063e30c3978146101e9578063efeaf59f146101f1578063f364a5a214610204578063f97a496c1461022457610116565b806387dabe46146101b65780638a38466e146101be5780638da5cb5b146101c6578063b985a3a0146101ce57610116565b806318d66bab116100e957806318d66bab1461017657806328d721ef1461017e5780632c9e2b051461019e5780634e57afe0146101a65780634e71e0c8146101ae57610116565b8063078dfbe71461011b57806307ee40bf14610130578063117be4c21461015957806312fc2bea1461016e575b600080fd5b61012e6101293660046117cf565b61022c565b005b61014361013e36600461173d565b61031b565b6040516101509190611d4d565b60405180910390f35b610161610350565b6040516101509190611b45565b61016161035f565b61016161036e565b61019161018c366004611819565b61037d565b6040516101509190611ccc565b6101616105f9565b610161610608565b61012e610617565b6101616106a4565b6101616106b3565b6101616106c2565b6101616106d1565b6101436101e436600461173d565b6106e0565b61016161090a565b6101436101ff36600461173d565b610919565b61021761021236600461177c565b610bb4565b6040516101509190611b73565b610143611277565b6000546001600160a01b0316331461025f5760405162461bcd60e51b815260040161025690611c32565b60405180910390fd5b81156102fa576001600160a01b0383161515806102795750805b6102955760405162461bcd60e51b815260040161025690611c03565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610316565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6000670de0b6b3a764000061034061033284610919565b61033a611277565b906112ec565b8161034757fe5b0490505b919050565b6003546001600160a01b031681565b6006546001600160a01b031681565b6004546001600160a01b031681565b6103856115f2565b61038d6115f2565b610395611277565b81526002546103ac906001600160a01b031661031b565b602080830191909152600854604080516317caf6f160e01b815290516001600160a01b03909216926317caf6f192600480840193829003018186803b1580156103f457600080fd5b505afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c91906119a9565b604080830191909152600854815163ca418d2360e01b815291516001600160a01b039091169163ca418d23916004808301926020929190829003018186803b15801561047757600080fd5b505afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906119a9565b6080820152600954604080516317caf6f160e01b815290516001600160a01b03909216916317caf6f191600480820192602092909190829003018186803b1580156104f957600080fd5b505afa15801561050d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053191906119a9565b60608201526009546040805163ca418d2360e01b815290516001600160a01b039092169163ca418d2391600480820192602092909190829003018186803b15801561057b57600080fd5b505afa15801561058f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b391906119a9565b60a08201526008546105cf906001600160a01b03168787610bb4565b60c08201526009546105eb906001600160a01b03168585610bb4565b60e082015295945050505050565b6009546001600160a01b031681565b6008546001600160a01b031681565b6001546001600160a01b03163381146106425760405162461bcd60e51b815260040161025690611c67565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6005546001600160a01b031681565b6007546001600160a01b031681565b6000546001600160a01b031681565b6002546001600160a01b031681565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107549190611760565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190611760565b9050600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561080757600080fd5b505afa15801561081b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083f9190611960565b506001600160701b031691506001600160701b0316915061086961086285611329565b83906112ec565b915061087e61087784611329565b82906112ec565b9050600061088b85610919565b9050600061089885610919565b905060006108a685846112ec565b905060006108b485846112ec565b90506000670de0b6b3a76400006108cb84846113ad565b816108d257fe5b0490506000670de0b6b3a76400006108f26108eb611277565b84906112ec565b816108f957fe5b049c9b505050505050505050505050565b6001546001600160a01b031681565b6003546000906001600160a01b03838116911614156109415750670de0b6b3a764000061034b565b60075460035460405163e6a4390560e01b81526000926001600160a01b039081169263e6a43905926109799288921690600401611b59565b60206040518083038186803b15801561099157600080fd5b505afa1580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611760565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610a0757600080fd5b505afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611960565b506001600160701b031691506001600160701b031691506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac99190611760565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190611760565b6003549091506001600160a01b0383811691161415610b8c57610b636108eb82611329565b925082610b7885670de0b6b3a76400006112ec565b81610b7f57fe5b049550505050505061034b565b610b9f610b9883611329565b85906112ec565b935083610b7884670de0b6b3a76400006112ec565b60608382828167ffffffffffffffff81118015610bd057600080fd5b50604051908082528060200260200182016040528015610c0a57816020015b610bf7611637565b815260200190600190039081610bef5790505b50905060005b8281101561126c57610c206116c3565b846001600160a01b0316631526fe27898985818110610c3b57fe5b905060200201356040518263ffffffff1660e01b8152600401610c5e9190611d4d565b60806040518083038186803b158015610c7657600080fd5b505afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae919061190e565b8051909150888884818110610cbf57fe5b90506020020135848481518110610cd257fe5b602002602001015160000181815250508160200151848481518110610cf357fe5b6020026020010151602001818152505060008190506000826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190611760565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610db857600080fd5b505afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190611760565b905082878781518110610dff57fe5b6020026020010151604001906001600160a01b031690816001600160a01b03168152505081878781518110610e3057fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505080878781518110610e6157fe5b6020026020010151608001906001600160a01b031690816001600160a01b031681525050816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610ebe57600080fd5b505afa158015610ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610efa9190810190611882565b878781518110610f0657fe5b602002602001015160a00181905250806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f4e57600080fd5b505afa158015610f62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f8a9190810190611882565b878781518110610f9657fe5b602002602001015160c00181905250610fae846106e0565b878781518110610fba57fe5b602002602001015160e0018181525050611047610fd684611329565b856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a91906119a9565b87878151811061105357fe5b60200260200101516101000181815250506000846001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016110929190611b45565b60206040518083038186803b1580156110aa57600080fd5b505afa1580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e291906119a9565b90506110f061087785611329565b8888815181106110fc57fe5b60200260200101516101400181815250508d88888151811061111a57fe5b602002602001015161012001906001600160a01b031690816001600160a01b031681525050896001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561117857600080fd5b505afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b091906119a9565b8888815181106111bc57fe5b6020026020010151610160018181525050896001600160a01b031663ca418d236040518163ffffffff1660e01b815260040160206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906119a9565b88888151811061124a57fe5b60209081029190910101516101800152505060019094019350610c1092505050565b509695505050505050565b6004546000908190611291906001600160a01b03166113d0565b6005549091506000906112ac906001600160a01b03166113d0565b6006549091506000906112c7906001600160a01b03166113d0565b905060006112df826112d986866113ad565b906113ad565b6003900495945050505050565b60008115806113075750508082028282828161130457fe5b04145b6113235760405162461bcd60e51b815260040161025690611c9c565b92915050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561136557600080fd5b505afa158015611379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139d91906119c1565b60120360ff16600a0a9392505050565b818101818110156113235760405162461bcd60e51b815260040161025690611bd3565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561140e57600080fd5b505afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114469190611960565b506001600160701b031691506001600160701b03169150600360009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b557600080fd5b505afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190611760565b6001600160a01b0316141561159e57611578610877856001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190611760565b611329565b90508161158d82670de0b6b3a76400006112ec565b8161159457fe5b049250505061034b565b6115dd610862856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b91508061158d83670de0b6b3a76400006112ec565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b604051806101a00160405280600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b60008083601f840112611705578182fd5b50813567ffffffffffffffff81111561171c578182fd5b602083019150836020808302850101111561173657600080fd5b9250929050565b60006020828403121561174e578081fd5b813561175981611dad565b9392505050565b600060208284031215611771578081fd5b815161175981611dad565b600080600060408486031215611790578182fd5b833561179b81611dad565b9250602084013567ffffffffffffffff8111156117b6578283fd5b6117c2868287016116f4565b9497909650939450505050565b6000806000606084860312156117e3578283fd5b83356117ee81611dad565b925060208401356117fe81611dc5565b9150604084013561180e81611dc5565b809150509250925092565b6000806000806040858703121561182e578081fd5b843567ffffffffffffffff80821115611845578283fd5b611851888389016116f4565b90965094506020870135915080821115611869578283fd5b50611876878288016116f4565b95989497509550505050565b600060208284031215611893578081fd5b815167ffffffffffffffff808211156118aa578283fd5b818401915084601f8301126118bd578283fd5b8151818111156118cb578384fd5b6118de601f8201601f1916602001611d56565b91508082528560208285010111156118f4578384fd5b611905816020840160208601611d7d565b50949350505050565b60006080828403121561191f578081fd5b6119296080611d56565b825161193481611dad565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600080600060608486031215611974578283fd5b835161197f81611dd3565b602085015190935061199081611dd3565b604085015190925063ffffffff8116811461180e578182fd5b6000602082840312156119ba578081fd5b5051919050565b6000602082840312156119d2578081fd5b815160ff81168114611759578182fd5b60006101a082518452602083015160208501526040830151611a076040860182611ab6565b506060830151611a1a6060860182611ab6565b506080830151611a2d6080860182611ab6565b5060a08301518160a0860152611a4582860182611b19565b91505060c083015184820360c0860152611a5f8282611b19565b91505060e083015160e085015261010080840151818601525061012080840151611a8b82870182611ab6565b5050610140838101519085015261016080840151908501526101809283015192909301919091525090565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b84811015611b0c57601f19868403018952611afa8383516119e2565b98840198925090830190600101611ade565b5090979650505050505050565b60008151808452611b31816020860160208601611d7d565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611bc657603f19888603018452611bb48583516119e2565b94509285019290850190600101611b98565b5092979650505050505050565b602080825260169082015275536166654d6174683a20416464204f766572666c6f7760501b604082015260600190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b602080825260169082015275536166654d6174683a204d756c204f766572666c6f7760501b604082015260600190565b60006020825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c08301516101008060e0850152611d27610120850183611ac3565b915060e0850151601f198584030182860152611d438382611ac3565b9695505050505050565b90815260200190565b60405181810167ffffffffffffffff81118282101715611d7557600080fd5b604052919050565b60005b83811015611d98578181015183820152602001611d80565b83811115611da7576000848401525b50505050565b6001600160a01b0381168114611dc257600080fd5b50565b8015158114611dc257600080fd5b6001600160701b0381168114611dc257600080fdfea26469706673582212201697d24b125811a4ce0582635b3b72878b8a1683071e5eeda0ed8c18f5996f5864736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806387dabe46116100a2578063c500e21411610071578063c500e214146101d6578063e30c3978146101e9578063efeaf59f146101f1578063f364a5a214610204578063f97a496c1461022457610116565b806387dabe46146101b65780638a38466e146101be5780638da5cb5b146101c6578063b985a3a0146101ce57610116565b806318d66bab116100e957806318d66bab1461017657806328d721ef1461017e5780632c9e2b051461019e5780634e57afe0146101a65780634e71e0c8146101ae57610116565b8063078dfbe71461011b57806307ee40bf14610130578063117be4c21461015957806312fc2bea1461016e575b600080fd5b61012e6101293660046117cf565b61022c565b005b61014361013e36600461173d565b61031b565b6040516101509190611d4d565b60405180910390f35b610161610350565b6040516101509190611b45565b61016161035f565b61016161036e565b61019161018c366004611819565b61037d565b6040516101509190611ccc565b6101616105f9565b610161610608565b61012e610617565b6101616106a4565b6101616106b3565b6101616106c2565b6101616106d1565b6101436101e436600461173d565b6106e0565b61016161090a565b6101436101ff36600461173d565b610919565b61021761021236600461177c565b610bb4565b6040516101509190611b73565b610143611277565b6000546001600160a01b0316331461025f5760405162461bcd60e51b815260040161025690611c32565b60405180910390fd5b81156102fa576001600160a01b0383161515806102795750805b6102955760405162461bcd60e51b815260040161025690611c03565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610316565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6000670de0b6b3a764000061034061033284610919565b61033a611277565b906112ec565b8161034757fe5b0490505b919050565b6003546001600160a01b031681565b6006546001600160a01b031681565b6004546001600160a01b031681565b6103856115f2565b61038d6115f2565b610395611277565b81526002546103ac906001600160a01b031661031b565b602080830191909152600854604080516317caf6f160e01b815290516001600160a01b03909216926317caf6f192600480840193829003018186803b1580156103f457600080fd5b505afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c91906119a9565b604080830191909152600854815163ca418d2360e01b815291516001600160a01b039091169163ca418d23916004808301926020929190829003018186803b15801561047757600080fd5b505afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906119a9565b6080820152600954604080516317caf6f160e01b815290516001600160a01b03909216916317caf6f191600480820192602092909190829003018186803b1580156104f957600080fd5b505afa15801561050d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053191906119a9565b60608201526009546040805163ca418d2360e01b815290516001600160a01b039092169163ca418d2391600480820192602092909190829003018186803b15801561057b57600080fd5b505afa15801561058f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b391906119a9565b60a08201526008546105cf906001600160a01b03168787610bb4565b60c08201526009546105eb906001600160a01b03168585610bb4565b60e082015295945050505050565b6009546001600160a01b031681565b6008546001600160a01b031681565b6001546001600160a01b03163381146106425760405162461bcd60e51b815260040161025690611c67565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6005546001600160a01b031681565b6007546001600160a01b031681565b6000546001600160a01b031681565b6002546001600160a01b031681565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107549190611760565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190611760565b9050600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561080757600080fd5b505afa15801561081b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083f9190611960565b506001600160701b031691506001600160701b0316915061086961086285611329565b83906112ec565b915061087e61087784611329565b82906112ec565b9050600061088b85610919565b9050600061089885610919565b905060006108a685846112ec565b905060006108b485846112ec565b90506000670de0b6b3a76400006108cb84846113ad565b816108d257fe5b0490506000670de0b6b3a76400006108f26108eb611277565b84906112ec565b816108f957fe5b049c9b505050505050505050505050565b6001546001600160a01b031681565b6003546000906001600160a01b03838116911614156109415750670de0b6b3a764000061034b565b60075460035460405163e6a4390560e01b81526000926001600160a01b039081169263e6a43905926109799288921690600401611b59565b60206040518083038186803b15801561099157600080fd5b505afa1580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611760565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610a0757600080fd5b505afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611960565b506001600160701b031691506001600160701b031691506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac99190611760565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190611760565b6003549091506001600160a01b0383811691161415610b8c57610b636108eb82611329565b925082610b7885670de0b6b3a76400006112ec565b81610b7f57fe5b049550505050505061034b565b610b9f610b9883611329565b85906112ec565b935083610b7884670de0b6b3a76400006112ec565b60608382828167ffffffffffffffff81118015610bd057600080fd5b50604051908082528060200260200182016040528015610c0a57816020015b610bf7611637565b815260200190600190039081610bef5790505b50905060005b8281101561126c57610c206116c3565b846001600160a01b0316631526fe27898985818110610c3b57fe5b905060200201356040518263ffffffff1660e01b8152600401610c5e9190611d4d565b60806040518083038186803b158015610c7657600080fd5b505afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae919061190e565b8051909150888884818110610cbf57fe5b90506020020135848481518110610cd257fe5b602002602001015160000181815250508160200151848481518110610cf357fe5b6020026020010151602001818152505060008190506000826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190611760565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610db857600080fd5b505afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190611760565b905082878781518110610dff57fe5b6020026020010151604001906001600160a01b031690816001600160a01b03168152505081878781518110610e3057fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505080878781518110610e6157fe5b6020026020010151608001906001600160a01b031690816001600160a01b031681525050816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610ebe57600080fd5b505afa158015610ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610efa9190810190611882565b878781518110610f0657fe5b602002602001015160a00181905250806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f4e57600080fd5b505afa158015610f62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f8a9190810190611882565b878781518110610f9657fe5b602002602001015160c00181905250610fae846106e0565b878781518110610fba57fe5b602002602001015160e0018181525050611047610fd684611329565b856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a91906119a9565b87878151811061105357fe5b60200260200101516101000181815250506000846001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016110929190611b45565b60206040518083038186803b1580156110aa57600080fd5b505afa1580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e291906119a9565b90506110f061087785611329565b8888815181106110fc57fe5b60200260200101516101400181815250508d88888151811061111a57fe5b602002602001015161012001906001600160a01b031690816001600160a01b031681525050896001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561117857600080fd5b505afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b091906119a9565b8888815181106111bc57fe5b6020026020010151610160018181525050896001600160a01b031663ca418d236040518163ffffffff1660e01b815260040160206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906119a9565b88888151811061124a57fe5b60209081029190910101516101800152505060019094019350610c1092505050565b509695505050505050565b6004546000908190611291906001600160a01b03166113d0565b6005549091506000906112ac906001600160a01b03166113d0565b6006549091506000906112c7906001600160a01b03166113d0565b905060006112df826112d986866113ad565b906113ad565b6003900495945050505050565b60008115806113075750508082028282828161130457fe5b04145b6113235760405162461bcd60e51b815260040161025690611c9c565b92915050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561136557600080fd5b505afa158015611379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139d91906119c1565b60120360ff16600a0a9392505050565b818101818110156113235760405162461bcd60e51b815260040161025690611bd3565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561140e57600080fd5b505afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114469190611960565b506001600160701b031691506001600160701b03169150600360009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b557600080fd5b505afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190611760565b6001600160a01b0316141561159e57611578610877856001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190611760565b611329565b90508161158d82670de0b6b3a76400006112ec565b8161159457fe5b049250505061034b565b6115dd610862856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b91508061158d83670de0b6b3a76400006112ec565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b604051806101a00160405280600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b60008083601f840112611705578182fd5b50813567ffffffffffffffff81111561171c578182fd5b602083019150836020808302850101111561173657600080fd5b9250929050565b60006020828403121561174e578081fd5b813561175981611dad565b9392505050565b600060208284031215611771578081fd5b815161175981611dad565b600080600060408486031215611790578182fd5b833561179b81611dad565b9250602084013567ffffffffffffffff8111156117b6578283fd5b6117c2868287016116f4565b9497909650939450505050565b6000806000606084860312156117e3578283fd5b83356117ee81611dad565b925060208401356117fe81611dc5565b9150604084013561180e81611dc5565b809150509250925092565b6000806000806040858703121561182e578081fd5b843567ffffffffffffffff80821115611845578283fd5b611851888389016116f4565b90965094506020870135915080821115611869578283fd5b50611876878288016116f4565b95989497509550505050565b600060208284031215611893578081fd5b815167ffffffffffffffff808211156118aa578283fd5b818401915084601f8301126118bd578283fd5b8151818111156118cb578384fd5b6118de601f8201601f1916602001611d56565b91508082528560208285010111156118f4578384fd5b611905816020840160208601611d7d565b50949350505050565b60006080828403121561191f578081fd5b6119296080611d56565b825161193481611dad565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600080600060608486031215611974578283fd5b835161197f81611dd3565b602085015190935061199081611dd3565b604085015190925063ffffffff8116811461180e578182fd5b6000602082840312156119ba578081fd5b5051919050565b6000602082840312156119d2578081fd5b815160ff81168114611759578182fd5b60006101a082518452602083015160208501526040830151611a076040860182611ab6565b506060830151611a1a6060860182611ab6565b506080830151611a2d6080860182611ab6565b5060a08301518160a0860152611a4582860182611b19565b91505060c083015184820360c0860152611a5f8282611b19565b91505060e083015160e085015261010080840151818601525061012080840151611a8b82870182611ab6565b5050610140838101519085015261016080840151908501526101809283015192909301919091525090565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b84811015611b0c57601f19868403018952611afa8383516119e2565b98840198925090830190600101611ade565b5090979650505050505050565b60008151808452611b31816020860160208601611d7d565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611bc657603f19888603018452611bb48583516119e2565b94509285019290850190600101611b98565b5092979650505050505050565b602080825260169082015275536166654d6174683a20416464204f766572666c6f7760501b604082015260600190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b602080825260169082015275536166654d6174683a204d756c204f766572666c6f7760501b604082015260600190565b60006020825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c08301516101008060e0850152611d27610120850183611ac3565b915060e0850151601f198584030182860152611d438382611ac3565b9695505050505050565b90815260200190565b60405181810167ffffffffffffffff81118282101715611d7557600080fd5b604052919050565b60005b83811015611d98578181015183820152602001611d80565b83811115611da7576000848401525b50505050565b6001600160a01b0381168114611dc257600080fd5b50565b8015158114611dc257600080fd5b6001600160701b0381168114611dc257600080fdfea26469706673582212201697d24b125811a4ce0582635b3b72878b8a1683071e5eeda0ed8c18f5996f5864736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
