{
  "_format": "hh-sol-artifact-1",
  "contractName": "VeJoeStaking",
  "sourceName": "contracts/VeJoeStaking.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Claim",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxCapPct",
          "type": "uint256"
        }
      ],
      "name": "UpdateMaxCapPct",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lastRewardTimestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accVeJoePerShare",
          "type": "uint256"
        }
      ],
      "name": "UpdateRewardVars",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "speedUpThreshold",
          "type": "uint256"
        }
      ],
      "name": "UpdateSpeedUpThreshold",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "veJoePerSharePerSec",
          "type": "uint256"
        }
      ],
      "name": "UpdateVeJoePerSharePerSec",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "withdrawAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "burnAmount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ACC_VEJOE_PER_SHARE_PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VEJOE_PER_SHARE_PER_SEC_PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accVeJoePerShare",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getPendingVeJoe",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_joe",
          "type": "address"
        },
        {
          "internalType": "contract VeJoeToken",
          "name": "_veJoe",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_veJoePerSharePerSec",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_speedUpVeJoePerSharePerSec",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_speedUpThreshold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_speedUpDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxCapPct",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "joe",
      "outputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastRewardTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxCapPct",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxCapPct",
          "type": "uint256"
        }
      ],
      "name": "setMaxCapPct",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_speedUpThreshold",
          "type": "uint256"
        }
      ],
      "name": "setSpeedUpThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_veJoePerSharePerSec",
          "type": "uint256"
        }
      ],
      "name": "setVeJoePerSharePerSec",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "speedUpDuration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "speedUpThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "speedUpVeJoePerSharePerSec",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateRewardVars",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "upperLimitMaxCapPct",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "upperLimitVeJoePerSharePerSec",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userInfos",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rewardDebt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastClaimTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "speedUpEndTimestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "veJoe",
      "outputs": [
        {
          "internalType": "contract VeJoeToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "veJoePerSharePerSec",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061324e806100206000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80638da5cb5b116100de578063ce785cc311610097578063edbf4ac211610071578063edbf4ac2146104cc578063f2fde38b14610562578063f8077fae146105a6578063fc2f53b6146105c45761018e565b8063ce785cc314610462578063db550ab914610490578063ea5254ad146104ae5761018e565b80638da5cb5b1461034c578063b19a3b2c14610380578063b6b55f251461039e578063b985a3a0146103cc578063bc109e7414610400578063c39d13d2146104345761018e565b80633a9d49b01161014b57806351f5958a1161012557806351f5958a146102d8578063715018a6146102f65780638728ec17146103005780638c30fe501461032e5761018e565b80633a9d49b01461024357806343b0215f146102615780634e71d92d146102ce5761018e565b806301e02729146101935780630c7aaf02146101b15780632db9680a146101cf5780632e1a7d4d146101ed5780632edf2cff1461021b578063328fa46114610239575b600080fd5b61019b61061c565b6040518082815260200191505060405180910390f35b6101b9610622565b6040518082815260200191505060405180910390f35b6101d7610628565b6040518082815260200191505060405180910390f35b6102196004803603602081101561020357600080fd5b810190808035906020019092919050505061062e565b005b6102236109d4565b6040518082815260200191505060405180910390f35b6102416109da565b005b61024b610b7e565b6040518082815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b84565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6102d6610bb4565b005b6102e0610c2b565b6040518082815260200191505060405180910390f35b6102fe610c31565b005b61032c6004803603602081101561031657600080fd5b8101908080359060200190929190505050610dbc565b005b610336610fa7565b6040518082815260200191505060405180910390f35b610354610fad565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610388610fd7565b6040518082815260200191505060405180910390f35b6103ca600480360360208110156103b457600080fd5b8101908080359060200190929190505050610fdd565b005b6103d4611233565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610408611259565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104606004803603602081101561044a57600080fd5b810190808035906020019092919050505061127f565b005b61048e6004803603602081101561047857600080fd5b810190808035906020019092919050505061140f565b005b61049861159b565b6040518082815260200191505060405180910390f35b6104b66115a1565b6040518082815260200191505060405180910390f35b610560600480360360e08110156104e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506115a7565b005b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a8c565b005b6105ae611c9c565b6040518082815260200191505060405180910390f35b610606600480360360208110156105da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca2565b6040518082815260200191505060405180910390f35b60715481565b60695481565b60705481565b60008111610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612ecb603e913960400191505060405180910390fd5b60006072600061069561202a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160000154101561072e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180612e3e6049913960600191505060405180910390fd5b6107366109da565b61074d82826000015461203290919063ffffffff16565b8160000181905550610782606a54610774836000015460695461207c90919063ffffffff16565b61210290919063ffffffff16565b8160010181905550428160020181905550600081600301819055506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316107e561202a565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082f57600080fd5b505afa158015610843573d6000803e3d6000fd5b505050506040513d602081101561085957600080fd5b81019080805190602001909291905050509050606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379cc67906108b261202a565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561090657600080fd5b505af115801561091a573d6000803e3d6000fd5b5050505061097261092961202a565b84606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661214c9092919063ffffffff16565b61097a61202a565b73ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688483604051808381526020018281526020019250505060405180910390a2505050565b606d5481565b606b5442116109e857610b7c565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a7357600080fd5b505afa158015610a87573d6000803e3d6000fd5b505050506040513d6020811015610a9d57600080fd5b81019080805190602001909291905050501415610ac05742606b81905550610b7c565b6000610ad7606b544261203290919063ffffffff16565b9050610b2a610b19606f54610b0b606a54610afd606c548761207c90919063ffffffff16565b61207c90919063ffffffff16565b61210290919063ffffffff16565b6069546121ee90919063ffffffff16565b60698190555042606b819055507f80412ab714911d3162155311ed4cae780b01a7eb225a1a554126e1a443eeb41a606b54606954604051808381526020018281526020019250505060405180910390a1505b565b606a5481565b60726020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b610bc4610bbf61202a565b612276565b610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ffd6036913960400191505060405180910390fd5b610c216109da565b610c296122c4565b565b60685481565b610c3961202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dc461202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6067548111610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b81526020018061316b604b913960600191505060405180910390fd5b60008114158015610ef357506068548111155b610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526044815260200180612e876044913960600191505060405180910390fd5b80606781905550610f5761202a565b73ffffffffffffffffffffffffffffffffffffffff167f8d4a57ca749299886997ec990a3f4a210270c58d6f283d4728136ca62c17d1bf826040518082815260200191505060405180910390a250565b606c5481565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60675481565b60008111611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612f6c603d913960400191505060405180910390fd5b61103e6109da565b60006072600061104c61202a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061109861109361202a565b612276565b15611109576110a56122c4565b4281600201819055506000816000015490506110cc8160705461207c90919063ffffffff16565b6110e060648561207c90919063ffffffff16565b10611103576110fa607154426121ee90919063ffffffff16565b82600301819055505b50611130565b61111e607154426121ee90919063ffffffff16565b81600301819055504281600201819055505b6111478282600001546121ee90919063ffffffff16565b816000018190555061117c606a5461116e836000015460695461207c90919063ffffffff16565b61210290919063ffffffff16565b81600101819055506111da61118f61202a565b3084606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661249e909392919063ffffffff16565b6111e261202a565b73ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c836040518082815260200191505060405180910390a25050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61128761202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811415801561135b575060648111155b6113b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612f2f603d913960400191505060405180910390fd5b806070819055506113bf61202a565b73ffffffffffffffffffffffffffffffffffffffff167fa1363b6f08985047219996aa27aae9e783577d8bb8f96505eb639afe5247c151826040518082815260200191505060405180910390a250565b61141761202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b606e54811115611534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806131e06039913960400191505060405180910390fd5b61153c6109da565b80606c8190555061154b61202a565b73ffffffffffffffffffffffffffffffffffffffff167f6c8f471e789107ccb05a807cb4c0f6b333f6b51380fc2270d777dd3fe255b45a826040518082815260200191505060405180910390a250565b606f5481565b606e5481565b600060019054906101000a900460ff16806115c657506115c561255f565b5b806115dc575060008054906101000a900460ff16155b611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015611681576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611689612576565b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141561170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613104602e913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611795576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806130546030913960400191505060405180910390fd5b6ec097ce7bc90715b34b9f1000000000606e81905550606e54861115611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806131e06039913960400191505060405180910390fd5b606e54851115611861576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806130846040913960400191505060405180910390fd5b60008414158015611873575060648411155b6118c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612f2f603d913960400191505060405180910390fd5b6301e13380831115611925576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806131326039913960400191505060405180910390fd5b629896806068819055506000821415801561194257506068548211155b611997576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806130c46040913960400191505060405180910390fd5b81606781905550836070819055508260718190555087606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085606c8190555084606d8190555042606b81905550670de0b6b3a7640000606a81905550670de0b6b3a7640000606f819055508015611a825760008060016101000a81548160ff0219169083151502179055505b5050505050505050565b611a9461202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612f096026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606b5481565b6000611cad82612276565b611cba5760009050612025565b6000607260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050600060695490506000611d4e606b544261203290919063ffffffff16565b90506000811115611dab57611da8611d99606f54611d8b606a54611d7d606c548761207c90919063ffffffff16565b61207c90919063ffffffff16565b61210290919063ffffffff16565b836121ee90919063ffffffff16565b91505b6000611dee8460200151611de0606a54611dd288600001518861207c90919063ffffffff16565b61210290919063ffffffff16565b61203290919063ffffffff16565b9050600080856060015114611e7d57600085606001514211611e105742611e16565b85606001515b90506000611e3187604001518361203290919063ffffffff16565b90506000611e4a606d548361207c90919063ffffffff16565b9050611e77606f54611e698a600001518461207c90919063ffffffff16565b61210290919063ffffffff16565b93505050505b6000611e9282846121ee90919063ffffffff16565b90506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f1f57600080fd5b505afa158015611f33573d6000803e3d6000fd5b505050506040513d6020811015611f4957600080fd5b810190808051906020019092919050505090506000611f77606754896000015161207c90919063ffffffff16565b905080611f8e60648461207c90919063ffffffff16565b10611fa457600098505050505050505050612025565b80611fcb6064611fbd86866121ee90919063ffffffff16565b61207c90919063ffffffff16565b11156120195761200a6064611ffc611fed60648661207c90919063ffffffff16565b8461203290919063ffffffff16565b61210290919063ffffffff16565b98505050505050505050612025565b82985050505050505050505b919050565b600033905090565b600061207483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612684565b905092915050565b60008083141561208f57600090506120fc565b60008284029050828482816120a057fe5b04146120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806130336021913960400191505060405180910390fd5b809150505b92915050565b600061214483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612744565b905092915050565b6121e98363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061280a565b505050565b60008082840190508381101561226c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080607260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b60006122d66122d161202a565b611ca2565b90506000607260006122e661202a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061234f606a54612341836000015460695461207c90919063ffffffff16565b61210290919063ffffffff16565b81600101819055506000816003015414158015612370575080600301544210155b1561238057600081600301819055505b600082111561249a57428160020181905550606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196123d861202a565b846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561242c57600080fd5b505af1158015612440573d6000803e3d6000fd5b5050505061244c61202a565b73ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4836040518082815260200191505060405180910390a25b5050565b612559846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061280a565b50505050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff1680612595575061259461255f565b5b806125ab575060008054906101000a900460ff16155b612600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612650576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6126586128f9565b6126606129f7565b80156126815760008060016101000a81548160ff0219169083151502179055505b50565b6000838311158290612731576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126f65780820151818401526020810190506126db565b50505050905090810190601f1680156127235780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906127f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127b557808201518184015260208101905061279a565b50505050905090810190601f1680156127e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816127fc57fe5b049050809150509392505050565b600061286c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612b9e9092919063ffffffff16565b90506000815111156128f45780806020019051602081101561288d57600080fd5b81019080805190602001909291905050506128f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806131b6602a913960400191505060405180910390fd5b5b505050565b600060019054906101000a900460ff1680612918575061291761255f565b5b8061292e575060008054906101000a900460ff16155b612983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff1615905080156129d3576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156129f45760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612a165750612a1561255f565b5b80612a2c575060008054906101000a900460ff16155b612a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612ad1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6000612adb61202a565b905080603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508015612b9b5760008060016101000a81548160ff0219169083151502179055505b50565b6060612bad8484600085612bb6565b90509392505050565b606082471015612c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612fa96026913960400191505060405180910390fd5b612c1a85612d5e565b612c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310612cdb5780518252602082019150602081019050602083039250612cb8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612d3d576040519150601f19603f3d011682016040523d82523d6000602084013e612d42565b606091505b5091509150612d52828286612d71565b92505050949350505050565b600080823b905060008111915050919050565b60608315612d8157829050612e36565b600083511115612d945782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612dfb578082015181840152602081019050612de0565b50505050905090810190601f168015612e285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe56654a6f655374616b696e673a2063616e6e6f74207769746864726177206772656174657220616d6f756e74206f66204a4f45207468616e2063757272656e746c79207374616b656456654a6f655374616b696e673a206578706563746564206e6577205f6d617843617050637420746f206265206e6f6e2d7a65726f20616e64203c3d20313030303030303056654a6f655374616b696e673a20657870656374656420776974686472617720616d6f756e7420746f2062652067726561746572207468616e207a65726f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737356654a6f655374616b696e673a206578706563746564205f737065656455705468726573686f6c6420746f206265203e203020616e64203c3d2031303056654a6f655374616b696e673a206578706563746564206465706f73697420616d6f756e7420746f2062652067726561746572207468616e207a65726f416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656456654a6f655374616b696e673a2063616e6e6f7420636c61696d2076654a4f45207768656e206e6f204a4f45206973207374616b6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7756654a6f655374616b696e673a20756e6578706563746564207a65726f206164647265737320666f72205f76654a6f6556654a6f655374616b696e673a206578706563746564205f7370656564557056654a6f65506572536861726550657253656320746f206265203c3d203165333656654a6f655374616b696e673a206578706563746564205f6d617843617050637420746f206265206e6f6e2d7a65726f20616e64203c3d20313030303030303056654a6f655374616b696e673a20756e6578706563746564207a65726f206164647265737320666f72205f6a6f6556654a6f655374616b696e673a206578706563746564205f737065656455704475726174696f6e20746f206265203c3d20333635206461797356654a6f655374616b696e673a206578706563746564206e6577205f6d617843617050637420746f2062652067726561746572207468616e206578697374696e67206d61784361705063745361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656456654a6f655374616b696e673a206578706563746564205f76654a6f65506572536861726550657253656320746f206265203c3d2031653336a2646970667358221220ed258f1024d1fe0e89a8601e62805561a5cb7b0f85d30479e0f32e827b70daae64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80638da5cb5b116100de578063ce785cc311610097578063edbf4ac211610071578063edbf4ac2146104cc578063f2fde38b14610562578063f8077fae146105a6578063fc2f53b6146105c45761018e565b8063ce785cc314610462578063db550ab914610490578063ea5254ad146104ae5761018e565b80638da5cb5b1461034c578063b19a3b2c14610380578063b6b55f251461039e578063b985a3a0146103cc578063bc109e7414610400578063c39d13d2146104345761018e565b80633a9d49b01161014b57806351f5958a1161012557806351f5958a146102d8578063715018a6146102f65780638728ec17146103005780638c30fe501461032e5761018e565b80633a9d49b01461024357806343b0215f146102615780634e71d92d146102ce5761018e565b806301e02729146101935780630c7aaf02146101b15780632db9680a146101cf5780632e1a7d4d146101ed5780632edf2cff1461021b578063328fa46114610239575b600080fd5b61019b61061c565b6040518082815260200191505060405180910390f35b6101b9610622565b6040518082815260200191505060405180910390f35b6101d7610628565b6040518082815260200191505060405180910390f35b6102196004803603602081101561020357600080fd5b810190808035906020019092919050505061062e565b005b6102236109d4565b6040518082815260200191505060405180910390f35b6102416109da565b005b61024b610b7e565b6040518082815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b84565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6102d6610bb4565b005b6102e0610c2b565b6040518082815260200191505060405180910390f35b6102fe610c31565b005b61032c6004803603602081101561031657600080fd5b8101908080359060200190929190505050610dbc565b005b610336610fa7565b6040518082815260200191505060405180910390f35b610354610fad565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610388610fd7565b6040518082815260200191505060405180910390f35b6103ca600480360360208110156103b457600080fd5b8101908080359060200190929190505050610fdd565b005b6103d4611233565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610408611259565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104606004803603602081101561044a57600080fd5b810190808035906020019092919050505061127f565b005b61048e6004803603602081101561047857600080fd5b810190808035906020019092919050505061140f565b005b61049861159b565b6040518082815260200191505060405180910390f35b6104b66115a1565b6040518082815260200191505060405180910390f35b610560600480360360e08110156104e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506115a7565b005b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a8c565b005b6105ae611c9c565b6040518082815260200191505060405180910390f35b610606600480360360208110156105da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca2565b6040518082815260200191505060405180910390f35b60715481565b60695481565b60705481565b60008111610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612ecb603e913960400191505060405180910390fd5b60006072600061069561202a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160000154101561072e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180612e3e6049913960600191505060405180910390fd5b6107366109da565b61074d82826000015461203290919063ffffffff16565b8160000181905550610782606a54610774836000015460695461207c90919063ffffffff16565b61210290919063ffffffff16565b8160010181905550428160020181905550600081600301819055506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316107e561202a565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082f57600080fd5b505afa158015610843573d6000803e3d6000fd5b505050506040513d602081101561085957600080fd5b81019080805190602001909291905050509050606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379cc67906108b261202a565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561090657600080fd5b505af115801561091a573d6000803e3d6000fd5b5050505061097261092961202a565b84606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661214c9092919063ffffffff16565b61097a61202a565b73ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688483604051808381526020018281526020019250505060405180910390a2505050565b606d5481565b606b5442116109e857610b7c565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a7357600080fd5b505afa158015610a87573d6000803e3d6000fd5b505050506040513d6020811015610a9d57600080fd5b81019080805190602001909291905050501415610ac05742606b81905550610b7c565b6000610ad7606b544261203290919063ffffffff16565b9050610b2a610b19606f54610b0b606a54610afd606c548761207c90919063ffffffff16565b61207c90919063ffffffff16565b61210290919063ffffffff16565b6069546121ee90919063ffffffff16565b60698190555042606b819055507f80412ab714911d3162155311ed4cae780b01a7eb225a1a554126e1a443eeb41a606b54606954604051808381526020018281526020019250505060405180910390a1505b565b606a5481565b60726020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b610bc4610bbf61202a565b612276565b610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ffd6036913960400191505060405180910390fd5b610c216109da565b610c296122c4565b565b60685481565b610c3961202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dc461202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6067548111610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b81526020018061316b604b913960600191505060405180910390fd5b60008114158015610ef357506068548111155b610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526044815260200180612e876044913960600191505060405180910390fd5b80606781905550610f5761202a565b73ffffffffffffffffffffffffffffffffffffffff167f8d4a57ca749299886997ec990a3f4a210270c58d6f283d4728136ca62c17d1bf826040518082815260200191505060405180910390a250565b606c5481565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60675481565b60008111611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612f6c603d913960400191505060405180910390fd5b61103e6109da565b60006072600061104c61202a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061109861109361202a565b612276565b15611109576110a56122c4565b4281600201819055506000816000015490506110cc8160705461207c90919063ffffffff16565b6110e060648561207c90919063ffffffff16565b10611103576110fa607154426121ee90919063ffffffff16565b82600301819055505b50611130565b61111e607154426121ee90919063ffffffff16565b81600301819055504281600201819055505b6111478282600001546121ee90919063ffffffff16565b816000018190555061117c606a5461116e836000015460695461207c90919063ffffffff16565b61210290919063ffffffff16565b81600101819055506111da61118f61202a565b3084606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661249e909392919063ffffffff16565b6111e261202a565b73ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c836040518082815260200191505060405180910390a25050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61128761202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811415801561135b575060648111155b6113b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612f2f603d913960400191505060405180910390fd5b806070819055506113bf61202a565b73ffffffffffffffffffffffffffffffffffffffff167fa1363b6f08985047219996aa27aae9e783577d8bb8f96505eb639afe5247c151826040518082815260200191505060405180910390a250565b61141761202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b606e54811115611534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806131e06039913960400191505060405180910390fd5b61153c6109da565b80606c8190555061154b61202a565b73ffffffffffffffffffffffffffffffffffffffff167f6c8f471e789107ccb05a807cb4c0f6b333f6b51380fc2270d777dd3fe255b45a826040518082815260200191505060405180910390a250565b606f5481565b606e5481565b600060019054906101000a900460ff16806115c657506115c561255f565b5b806115dc575060008054906101000a900460ff16155b611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015611681576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611689612576565b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141561170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613104602e913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611795576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806130546030913960400191505060405180910390fd5b6ec097ce7bc90715b34b9f1000000000606e81905550606e54861115611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806131e06039913960400191505060405180910390fd5b606e54851115611861576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806130846040913960400191505060405180910390fd5b60008414158015611873575060648411155b6118c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612f2f603d913960400191505060405180910390fd5b6301e13380831115611925576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806131326039913960400191505060405180910390fd5b629896806068819055506000821415801561194257506068548211155b611997576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806130c46040913960400191505060405180910390fd5b81606781905550836070819055508260718190555087606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085606c8190555084606d8190555042606b81905550670de0b6b3a7640000606a81905550670de0b6b3a7640000606f819055508015611a825760008060016101000a81548160ff0219169083151502179055505b5050505050505050565b611a9461202a565b73ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612f096026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606b5481565b6000611cad82612276565b611cba5760009050612025565b6000607260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050600060695490506000611d4e606b544261203290919063ffffffff16565b90506000811115611dab57611da8611d99606f54611d8b606a54611d7d606c548761207c90919063ffffffff16565b61207c90919063ffffffff16565b61210290919063ffffffff16565b836121ee90919063ffffffff16565b91505b6000611dee8460200151611de0606a54611dd288600001518861207c90919063ffffffff16565b61210290919063ffffffff16565b61203290919063ffffffff16565b9050600080856060015114611e7d57600085606001514211611e105742611e16565b85606001515b90506000611e3187604001518361203290919063ffffffff16565b90506000611e4a606d548361207c90919063ffffffff16565b9050611e77606f54611e698a600001518461207c90919063ffffffff16565b61210290919063ffffffff16565b93505050505b6000611e9282846121ee90919063ffffffff16565b90506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f1f57600080fd5b505afa158015611f33573d6000803e3d6000fd5b505050506040513d6020811015611f4957600080fd5b810190808051906020019092919050505090506000611f77606754896000015161207c90919063ffffffff16565b905080611f8e60648461207c90919063ffffffff16565b10611fa457600098505050505050505050612025565b80611fcb6064611fbd86866121ee90919063ffffffff16565b61207c90919063ffffffff16565b11156120195761200a6064611ffc611fed60648661207c90919063ffffffff16565b8461203290919063ffffffff16565b61210290919063ffffffff16565b98505050505050505050612025565b82985050505050505050505b919050565b600033905090565b600061207483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612684565b905092915050565b60008083141561208f57600090506120fc565b60008284029050828482816120a057fe5b04146120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806130336021913960400191505060405180910390fd5b809150505b92915050565b600061214483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612744565b905092915050565b6121e98363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061280a565b505050565b60008082840190508381101561226c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080607260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b60006122d66122d161202a565b611ca2565b90506000607260006122e661202a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061234f606a54612341836000015460695461207c90919063ffffffff16565b61210290919063ffffffff16565b81600101819055506000816003015414158015612370575080600301544210155b1561238057600081600301819055505b600082111561249a57428160020181905550606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196123d861202a565b846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561242c57600080fd5b505af1158015612440573d6000803e3d6000fd5b5050505061244c61202a565b73ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4836040518082815260200191505060405180910390a25b5050565b612559846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061280a565b50505050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff1680612595575061259461255f565b5b806125ab575060008054906101000a900460ff16155b612600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612650576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6126586128f9565b6126606129f7565b80156126815760008060016101000a81548160ff0219169083151502179055505b50565b6000838311158290612731576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126f65780820151818401526020810190506126db565b50505050905090810190601f1680156127235780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906127f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127b557808201518184015260208101905061279a565b50505050905090810190601f1680156127e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816127fc57fe5b049050809150509392505050565b600061286c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612b9e9092919063ffffffff16565b90506000815111156128f45780806020019051602081101561288d57600080fd5b81019080805190602001909291905050506128f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806131b6602a913960400191505060405180910390fd5b5b505050565b600060019054906101000a900460ff1680612918575061291761255f565b5b8061292e575060008054906101000a900460ff16155b612983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff1615905080156129d3576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156129f45760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612a165750612a1561255f565b5b80612a2c575060008054906101000a900460ff16155b612a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fcf602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612ad1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6000612adb61202a565b905080603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508015612b9b5760008060016101000a81548160ff0219169083151502179055505b50565b6060612bad8484600085612bb6565b90509392505050565b606082471015612c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612fa96026913960400191505060405180910390fd5b612c1a85612d5e565b612c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310612cdb5780518252602082019150602081019050602083039250612cb8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612d3d576040519150601f19603f3d011682016040523d82523d6000602084013e612d42565b606091505b5091509150612d52828286612d71565b92505050949350505050565b600080823b905060008111915050919050565b60608315612d8157829050612e36565b600083511115612d945782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612dfb578082015181840152602081019050612de0565b50505050905090810190601f168015612e285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe56654a6f655374616b696e673a2063616e6e6f74207769746864726177206772656174657220616d6f756e74206f66204a4f45207468616e2063757272656e746c79207374616b656456654a6f655374616b696e673a206578706563746564206e6577205f6d617843617050637420746f206265206e6f6e2d7a65726f20616e64203c3d20313030303030303056654a6f655374616b696e673a20657870656374656420776974686472617720616d6f756e7420746f2062652067726561746572207468616e207a65726f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737356654a6f655374616b696e673a206578706563746564205f737065656455705468726573686f6c6420746f206265203e203020616e64203c3d2031303056654a6f655374616b696e673a206578706563746564206465706f73697420616d6f756e7420746f2062652067726561746572207468616e207a65726f416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656456654a6f655374616b696e673a2063616e6e6f7420636c61696d2076654a4f45207768656e206e6f204a4f45206973207374616b6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7756654a6f655374616b696e673a20756e6578706563746564207a65726f206164647265737320666f72205f76654a6f6556654a6f655374616b696e673a206578706563746564205f7370656564557056654a6f65506572536861726550657253656320746f206265203c3d203165333656654a6f655374616b696e673a206578706563746564205f6d617843617050637420746f206265206e6f6e2d7a65726f20616e64203c3d20313030303030303056654a6f655374616b696e673a20756e6578706563746564207a65726f206164647265737320666f72205f6a6f6556654a6f655374616b696e673a206578706563746564205f737065656455704475726174696f6e20746f206265203c3d20333635206461797356654a6f655374616b696e673a206578706563746564206e6577205f6d617843617050637420746f2062652067726561746572207468616e206578697374696e67206d61784361705063745361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656456654a6f655374616b696e673a206578706563746564205f76654a6f65506572536861726550657253656320746f206265203c3d2031653336a2646970667358221220ed258f1024d1fe0e89a8601e62805561a5cb7b0f85d30479e0f32e827b70daae64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
