{
  "_format": "hh-sol-artifact-1",
  "contractName": "MultipleWinnersHarness",
  "sourceName": "contracts/test/MultipleWinnersHarness.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract BeforeAwardListenerInterface",
          "name": "beforeAwardListener",
          "type": "address"
        }
      ],
      "name": "BeforeAwardListenerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "carry",
          "type": "bool"
        }
      ],
      "name": "BlocklistCarrySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "name": "BlocklistRetryCountSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isBlocked",
          "type": "bool"
        }
      ],
      "name": "BlocklistSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC20Upgradeable",
          "name": "externalErc20",
          "type": "address"
        }
      ],
      "name": "ExternalErc20AwardAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC20Upgradeable",
          "name": "externalErc20Award",
          "type": "address"
        }
      ],
      "name": "ExternalErc20AwardRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC721Upgradeable",
          "name": "externalErc721",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "ExternalErc721AwardAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC721Upgradeable",
          "name": "externalErc721Award",
          "type": "address"
        }
      ],
      "name": "ExternalErc721AwardRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prizePeriodStart",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prizePeriodSeconds",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract PrizePool",
          "name": "prizePool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract TicketInterface",
          "name": "ticket",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IERC20Upgradeable",
          "name": "sponsorship",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract RNGInterface",
          "name": "rng",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IERC20Upgradeable[]",
          "name": "externalErc20Awards",
          "type": "address[]"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "NoWinners",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numberOfWinners",
          "type": "uint256"
        }
      ],
      "name": "NumberOfWinnersSet",
      "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": "contract PeriodicPrizeStrategyListenerInterface",
          "name": "periodicPrizeStrategyListener",
          "type": "address"
        }
      ],
      "name": "PeriodicPrizeStrategyListenerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prizePeriodSeconds",
          "type": "uint256"
        }
      ],
      "name": "PrizePeriodSecondsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "prizePool",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "rngRequestId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "rngLockBlock",
          "type": "uint32"
        }
      ],
      "name": "PrizePoolAwardCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "prizePool",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "rngRequestId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "rngLockBlock",
          "type": "uint32"
        }
      ],
      "name": "PrizePoolAwardStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "randomNumber",
          "type": "uint256"
        }
      ],
      "name": "PrizePoolAwarded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "prizePeriodStartedAt",
          "type": "uint256"
        }
      ],
      "name": "PrizePoolOpened",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "target",
          "type": "uint256"
        }
      ],
      "name": "PrizeSplitRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "percentage",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "token",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "PrizeSplitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numberOfWinners",
          "type": "uint256"
        }
      ],
      "name": "RetryMaxLimitReached",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "RngRequestFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "rngRequestTimeout",
          "type": "uint32"
        }
      ],
      "name": "RngRequestTimeoutSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract RNGInterface",
          "name": "rngService",
          "type": "address"
        }
      ],
      "name": "RngServiceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "splitExternalErc20Awards",
          "type": "bool"
        }
      ],
      "name": "SplitExternalErc20AwardsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract TokenListenerInterface",
          "name": "tokenListener",
          "type": "address"
        }
      ],
      "name": "TokenListenerUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_externalErc20",
          "type": "address"
        }
      ],
      "name": "addExternalErc20Award",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable[]",
          "name": "_externalErc20s",
          "type": "address[]"
        }
      ],
      "name": "addExternalErc20Awards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC721Upgradeable",
          "name": "_externalErc721",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "addExternalErc721Award",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "beforeAwardListener",
      "outputs": [
        {
          "internalType": "contract BeforeAwardListenerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "referrer",
          "type": "address"
        }
      ],
      "name": "beforeTokenMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        }
      ],
      "name": "beforeTokenTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "blocklistRetryCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTime",
          "type": "uint256"
        }
      ],
      "name": "calculateNextPrizePeriodStartTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canCompleteAward",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canStartAward",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cancelAward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "carryOverBlocklist",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "completeAward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentPrize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "randomNumber",
          "type": "uint256"
        }
      ],
      "name": "distribute",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "secondsPerBlockMantissa",
          "type": "uint256"
        }
      ],
      "name": "estimateRemainingBlocksToPrize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExternalErc20Awards",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC721Upgradeable",
          "name": "_externalErc721",
          "type": "address"
        }
      ],
      "name": "getExternalErc721AwardTokenIds",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExternalErc721Awards",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastRngLockBlock",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastRngRequestId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_prizePeriodStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_prizePeriodSeconds",
          "type": "uint256"
        },
        {
          "internalType": "contract PrizePool",
          "name": "_prizePool",
          "type": "address"
        },
        {
          "internalType": "contract TicketInterface",
          "name": "_ticket",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_sponsorship",
          "type": "address"
        },
        {
          "internalType": "contract RNGInterface",
          "name": "_rng",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Upgradeable[]",
          "name": "externalErc20Awards",
          "type": "address[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_prizePeriodStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_prizePeriodSeconds",
          "type": "uint256"
        },
        {
          "internalType": "contract PrizePool",
          "name": "_prizePool",
          "type": "address"
        },
        {
          "internalType": "contract TicketInterface",
          "name": "_ticket",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_sponsorship",
          "type": "address"
        },
        {
          "internalType": "contract RNGInterface",
          "name": "_rng",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_numberOfWinners",
          "type": "uint256"
        }
      ],
      "name": "initializeMultipleWinners",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isBlocklisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPrizePeriodOver",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRngCompleted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRngRequested",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRngTimedOut",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "numberOfWinners",
      "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": "periodicPrizeStrategyListener",
      "outputs": [
        {
          "internalType": "contract PeriodicPrizeStrategyListenerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizePeriodEndAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizePeriodRemainingSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizePeriodSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizePeriodStartedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizePool",
      "outputs": [
        {
          "internalType": "contract PrizePool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "prizeSplitIndex",
          "type": "uint256"
        }
      ],
      "name": "prizeSplit",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "percentage",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "token",
              "type": "uint8"
            }
          ],
          "internalType": "struct PrizeSplit.PrizeSplitConfig",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizeSplits",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "percentage",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "token",
              "type": "uint8"
            }
          ],
          "internalType": "struct PrizeSplit.PrizeSplitConfig[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_externalErc20",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_prevExternalErc20",
          "type": "address"
        }
      ],
      "name": "removeExternalErc20Award",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC721Upgradeable",
          "name": "_externalErc721",
          "type": "address"
        },
        {
          "internalType": "contract IERC721Upgradeable",
          "name": "_prevExternalErc721",
          "type": "address"
        }
      ],
      "name": "removeExternalErc721Award",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rng",
      "outputs": [
        {
          "internalType": "contract RNGInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rngRequestTimeout",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract BeforeAwardListenerInterface",
          "name": "_beforeAwardListener",
          "type": "address"
        }
      ],
      "name": "setBeforeAwardListener",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "setBlocklistRetryCount",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isBlocked",
          "type": "bool"
        }
      ],
      "name": "setBlocklisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_carry",
          "type": "bool"
        }
      ],
      "name": "setCarryBlocklist",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_currentTime",
          "type": "uint256"
        }
      ],
      "name": "setCurrentTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "name": "setNumberOfWinners",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract PeriodicPrizeStrategyListenerInterface",
          "name": "_periodicPrizeStrategyListener",
          "type": "address"
        }
      ],
      "name": "setPeriodicPrizeStrategyListener",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_prizePeriodSeconds",
          "type": "uint256"
        }
      ],
      "name": "setPrizePeriodSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "percentage",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "token",
              "type": "uint8"
            }
          ],
          "internalType": "struct PrizeSplit.PrizeSplitConfig",
          "name": "prizeStrategySplit",
          "type": "tuple"
        },
        {
          "internalType": "uint8",
          "name": "prizeSplitIndex",
          "type": "uint8"
        }
      ],
      "name": "setPrizeSplit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "percentage",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "token",
              "type": "uint8"
            }
          ],
          "internalType": "struct PrizeSplit.PrizeSplitConfig[]",
          "name": "newPrizeSplits",
          "type": "tuple[]"
        }
      ],
      "name": "setPrizeSplits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_rngRequestTimeout",
          "type": "uint32"
        }
      ],
      "name": "setRngRequestTimeout",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract RNGInterface",
          "name": "rngService",
          "type": "address"
        }
      ],
      "name": "setRngService",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_splitExternalErc20Awards",
          "type": "bool"
        }
      ],
      "name": "setSplitExternalErc20Awards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract TokenListenerInterface",
          "name": "_tokenListener",
          "type": "address"
        }
      ],
      "name": "setTokenListener",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "splitExternalErc20Awards",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sponsorship",
      "outputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startAward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ticket",
      "outputs": [
        {
          "internalType": "contract TicketInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenListener",
      "outputs": [
        {
          "internalType": "contract TokenListenerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50615bcf80620000216000396000f3fe608060405234801561001057600080fd5b50600436106103e65760003560e01c80637f2be9fc1161020a578063b024468211610125578063d18e81b3116100b8578063eefc8ad111610087578063eefc8ad114610762578063f2fde38b14610782578063f97700e214610795578063fbf0953e146107a8578063ffa1ad74146107bb576103e6565b8063d18e81b314610742578063d5ad6bf61461074a578063d605787b14610752578063dfb2f13b1461075a576103e6565b8063c2f19ee8116100f4578063c2f19ee81461070c578063c42b42a014610714578063c48ddbcb1461071c578063c68532701461072f576103e6565b8063b0244682146106cb578063b2210957146106de578063b9ee1e05146106f1578063c25a9c32146106f9576103e6565b80638e204c431161019d57806395e5f9ee1161016c57806395e5f9ee146106a05780639dafafb0146106a8578063a4e075ca146106b0578063acca5b95146106c3576103e6565b80638e204c431461065257806391c05b0b1461066557806394144c6b146106785780639417783f14610680576103e6565b80638aa3ec6f116101d95780638aa3ec6f1461061a5780638acfaca91461062d5780638d5f10c4146106355780638da5cb5b1461064a576103e6565b80637f2be9fc146105d95780637f4296d7146105ec578063876f5c7e146105ff578063884a444814610607576103e6565b80634e5d08e0116103055780636be51c4f116102985780636f46f221116102675780636f46f221146105b1578063715018a6146105b9578063719ce73e146105c157806372f33ea9146105c9578063738bbea8146105d1576103e6565b80636be51c4f146105865780636bea53441461058e5780636cc25db7146105965780636dfb03861461059e576103e6565b806362c77a61116102d457806362c77a61146105505780636696822114610558578063671137c41461056b5780636a74f1071461057e576103e6565b80634e5d08e01461050f578063500db70d1461052257806352a301091461052a578063605e25ac1461053d576103e6565b80632c8fe73d1161037d57806347bed9981161034c57806347bed998146104d95780634aba4f6b146104ec5780634c169f4f146104f45780634d7f3db0146104fc576103e6565b80632c8fe73d1461049657806330fcdf411461049e57806338a9b4b6146104b157806342d09209146104c4576103e6565b8063111070e4116103b9578063111070e414610451578063152d308c1461045957806322f8e5661461046c5780632a7ad60914610481576103e6565b806301b48e34146103eb57806301ffc9a7146104145780630d847fc4146104345780630faf125f14610449575b600080fd5b6103fe6103f936600461490a565b6107d0565b60405161040b9190614b3c565b60405180910390f35b610427610422366004614813565b6107e9565b60405161040b9190614d91565b61043c61081f565b60405161040b9190614b45565b6103fe61082e565b610427610834565b6104276104673660046145e1565b610843565b61047f61047a36600461490a565b6108fa565b005b6104896108ff565b60405161040b9190615ae0565b6103fe61090b565b61047f6104ac366004614557565b61091a565b61047f6104bf3660046147db565b6109f2565b6104cc610a88565b60405161040b9190614c90565b6103fe6104e736600461490a565b610a94565b610427610a9f565b61047f610b28565b61047f61050a366004614646565b610bf2565b61047f61051d366004614557565b610cca565b61043c610d67565b61042761053836600461490a565b610d76565b61047f61054b366004614557565b610e04565b6104cc610ee5565b61047f61056636600461472b565b610ef1565b61047f61057936600461483b565b610fc3565b610427611023565b61043c61103c565b61048961104b565b61043c61105f565b61047f6105ac36600461490a565b61106e565b6104276110be565b61047f6110c7565b61043c611150565b6103fe61115f565b610427611165565b61047f6105e7366004614a33565b6111b8565b61047f6105fa366004614557565b61125c565b610427611312565b61047f61061536600461490a565b611331565b61047f610628366004614557565b611381565b6103fe611459565b61063d61145f565b60405161040b9190614cdd565b61043c6114e4565b610427610660366004614557565b6114f3565b61047f61067336600461490a565b611508565b6103fe611511565b61069361068e366004614557565b611517565b60405161040b9190614d59565b610427611583565b61042761158d565b6104276106be3660046147db565b611596565b61048961161d565b61047f6106d936600461483b565b611629565b61047f6106ec36600461458f565b6116b4565b61047f611785565b61047f61070736600461476b565b6119cd565b61043c611d5c565b6103fe611d6b565b61047f61072a366004614868565b611de8565b61047f61073d366004614aad565b611fdd565b6103fe61202d565b6103fe612033565b61043c61203d565b61047f61204c565b61077561077036600461490a565b6122ce565b60405161040b9190615a0a565b61047f610790366004614557565b612333565b61047f6107a336600461493a565b6123f4565b61047f6107b63660046148d6565b612655565b6107c36127f4565b60405161040b9190614db1565b60006107e36107dd612815565b83612852565b92915050565b60006001600160e01b031982166301ffc9a760e01b14806107e35750506001600160e01b031916600162a1cb1960e01b03191490565b6073546001600160a01b031681565b607a5481565b606a5463ffffffff1615155b90565b600061084d61287b565b6001600160a01b031661085e6114e4565b6001600160a01b03161461088d5760405162461bcd60e51b8152600401610884906154ec565b60405180910390fd5b61089561287f565b6001600160a01b03831660008181526078602052604090819020805460ff1916851515179055517fd1ac9a365c0e3bfad562e0a809a5ded3842a2b489f839b3327e4e34ee0128f28906108e9908590614d91565b60405180910390a250600192915050565b607b55565b606a5463ffffffff1690565b60006109156128d4565b905090565b61092261287b565b6001600160a01b03166109336114e4565b6001600160a01b0316146109595760405162461bcd60e51b8152600401610884906154ec565b61096161287f565b6001600160a01b038116158061098c575061098c6001600160a01b03821663266fce1f60e11b6128ed565b6109a85760405162461bcd60e51b81526004016108849061559a565b607380546001600160a01b0319166001600160a01b0383169081179091556040517fc4feff61630891ea2cb42a54fbe3ff2e65422f2ed17323ac6b65f4521112e87e90600090a250565b6109fa61287b565b6001600160a01b0316610a0b6114e4565b6001600160a01b031614610a315760405162461bcd60e51b8152600401610884906154ec565b610a3961287f565b6077805460ff191682151517908190556040517f6959d02e8fb6264d1d39bf37f1e725001f342714933cf38f8627a2442efc43fd91610a7d9160ff90911690614d91565b60405180910390a150565b60606109156070612910565b60006107e3826129f0565b606954606a54604051630e866e6f60e21b81526000926001600160a01b031691633a19b9bc91610ad89163ffffffff1690600401615ae0565b60206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091591906147f7565b610b30611165565b610b4c5760405162461bcd60e51b8152600401610884906158ea565b606a80546bffffffffffffffffffffffff19811690915560405163ffffffff80831692640100000000900416907fee6702c46c5618e6fc7e625c71f4c85df9c91d456cb16a3aea71ab83b1fee00590600090a160665460405163ffffffff8416916001600160a01b03169033907fd50026ee0824513af20cdf5e72d1fbfbe8fd646ee0576378e080326f1a695e5890610be6908690615ae0565b60405180910390a45050565b6066546001600160a01b0316610c0661287b565b6001600160a01b031614610c2c5760405162461bcd60e51b8152600401610884906150c4565b6067546001600160a01b0383811691161415610c4a57610c4a61287f565b6065546001600160a01b031615610cc4576065546040516304d7f3db60e41b81526001600160a01b0390911690634d7f3db090610c91908790879087908790600401614c65565b600060405180830381600087803b158015610cab57600080fd5b505af1158015610cbf573d6000803e3d6000fd5b505050505b50505050565b610cd26114e4565b6001600160a01b0316610ce361287b565b6001600160a01b03161480610d1257506074546001600160a01b0316610d0761287b565b6001600160a01b0316145b80610d3757506073546001600160a01b0316610d2c61287b565b6001600160a01b0316145b610d535760405162461bcd60e51b815260040161088490614f5b565b610d5b61287f565b610d6481612a37565b50565b6068546001600160a01b031681565b6000610d8061287b565b6001600160a01b0316610d916114e4565b6001600160a01b031614610db75760405162461bcd60e51b8152600401610884906154ec565b610dbf61287f565b607a8290556040517f63e4e34f49d12428c03e04e61340c7167e36eb0ff6f0b1970c7544026179403990610df4908490614b3c565b60405180910390a1506001919050565b610e0c61287b565b6001600160a01b0316610e1d6114e4565b6001600160a01b031614610e435760405162461bcd60e51b8152600401610884906154ec565b610e4b61287f565b6001600160a01b0381161580610e795750610e796001600160a01b038216600162a1cb1960e01b03196128ed565b610e955760405162461bcd60e51b815260040161088490614e28565b606580546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f9fc437aa70ad4ee5f33f6772bf338eed41e21b95435820817ab8b4df161ce4dd90600090a250565b6060610915606e612910565b610ef96114e4565b6001600160a01b0316610f0a61287b565b6001600160a01b03161480610f3957506074546001600160a01b0316610f2e61287b565b6001600160a01b0316145b80610f5e57506073546001600160a01b0316610f5361287b565b6001600160a01b0316145b610f7a5760405162461bcd60e51b815260040161088490614f5b565b610f8261287f565b60005b81811015610fbe57610fb6838383818110610f9c57fe5b9050602002016020810190610fb19190614557565b612a37565b600101610f85565b505050565b610fcb61287b565b6001600160a01b0316610fdc6114e4565b6001600160a01b0316146110025760405162461bcd60e51b8152600401610884906154ec565b61100a61287f565b61101660708284612beb565b61101f82612cb5565b5050565b600061102d610834565b80156109155750610915610a9f565b6065546001600160a01b031681565b606a54640100000000900463ffffffff1690565b6067546001600160a01b031681565b61107661287b565b6001600160a01b03166110876114e4565b6001600160a01b0316146110ad5760405162461bcd60e51b8152600401610884906154ec565b6110b561287f565b610d6481612d0d565b60795460ff1681565b6110cf61287b565b6001600160a01b03166110e06114e4565b6001600160a01b0316146111065760405162461bcd60e51b8152600401610884906154ec565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6066546001600160a01b031681565b606d5481565b606a54600090600160401b900463ffffffff1661118457506000610840565b606a54606b546111a89163ffffffff91821691600160401b909104811690612d6216565b6111b0612d87565b119050610840565b600054610100900460ff16806111d157506111d1612d8d565b806111df575060005460ff16155b6111fb5760405162461bcd60e51b815260040161088490615360565b600054610100900460ff16158015611226576000805460ff1961ff0019909116610100171660011790555b6060611237898989898989876123f4565b61124083612d0d565b508015610cbf576000805461ff00191690555050505050505050565b61126461287b565b6001600160a01b03166112756114e4565b6001600160a01b03161461129b5760405162461bcd60e51b8152600401610884906154ec565b6112a361287f565b6112ab610834565b156112c85760405162461bcd60e51b8152600401610884906158a7565b606980546001600160a01b0319166001600160a01b0383169081179091556040517ff935763cc7c57ee8ed6318ed71e756cca0731294c9f46ff5b386f36d6ff1417a90600090a250565b600061131c612d98565b8015610915575061132b610834565b15905090565b61133961287b565b6001600160a01b031661134a6114e4565b6001600160a01b0316146113705760405162461bcd60e51b8152600401610884906154ec565b61137861287f565b610d6481612db1565b61138961287b565b6001600160a01b031661139a6114e4565b6001600160a01b0316146113c05760405162461bcd60e51b8152600401610884906154ec565b6113c861287f565b6001600160a01b03811615806113f357506113f36001600160a01b038216632ba8396360e11b6128ed565b61140f5760405162461bcd60e51b8152600401610884906157b8565b607480546001600160a01b0319166001600160a01b0383169081179091556040517fda05d50a3a1ec0ffab059f1d457ae59f68ccfb3ffbb4dad283c516f9103d584b90600090a250565b60765490565b60606075805480602002602001604051908101604052809291908181526020016000905b828210156114db57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810461ffff1683850152600160b01b900460ff1690820152825260019092019101611483565b50505050905090565b6033546001600160a01b031690565b60786020526000908152604090205460ff1681565b610d6481612e06565b606c5481565b6001600160a01b03811660009081526072602090815260409182902080548351818402810184019094528084526060939283018282801561157757602002820191906000526020600020905b815481526020019060010190808311611563575b50505050509050919050565b6000610915612d98565b60775460ff1681565b60006115a061287b565b6001600160a01b03166115b16114e4565b6001600160a01b0316146115d75760405162461bcd60e51b8152600401610884906154ec565b6115df61287f565b6079805460ff19168315151790556040517f2b4b6ffe286f7ce4ccc6b136bb14987b0a00092174d88938a0c667a104a4a73190610df4908490614d91565b606b5463ffffffff1681565b61163161287b565b6001600160a01b03166116426114e4565b6001600160a01b0316146116685760405162461bcd60e51b8152600401610884906154ec565b61167061287f565b61167c606e8284612beb565b6040516001600160a01b038316907f58982464497acdab11ad29d39907e076b0d3b8daf1d9b734174c7c3a2a0e8c7490600090a25050565b6066546001600160a01b03166116c861287b565b6001600160a01b0316146116ee5760405162461bcd60e51b8152600401610884906150c4565b826001600160a01b0316846001600160a01b031614156117205760405162461bcd60e51b815260040161088490615109565b6067546001600160a01b038281169116141561173e5761173e61287f565b6065546001600160a01b031615610cc45760655460405163b221095760e01b81526001600160a01b039091169063b221095790610c91908790879087908790600401614bfe565b61178d612d98565b6117a95760405162461bcd60e51b815260040161088490614eca565b6117b1610834565b156117ce5760405162461bcd60e51b815260040161088490615429565b60695460408051630d37b53760e01b8152815160009384936001600160a01b0390911692630d37b5379260048083019392829003018186803b15801561181357600080fd5b505afa158015611827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184b9190614619565b90925090506001600160a01b038216158015906118685750600081115b1561188757606954611887906001600160a01b03848116911683613393565b6069546040805163433c53d960e11b8152815160009384936001600160a01b0390911692638678a7b2926004808301939282900301818787803b1580156118cd57600080fd5b505af11580156118e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119059190614ac9565b606a805463ffffffff8084166401000000000267ffffffff000000001991861663ffffffff199093169290921716179055909250905061194b611946612d87565b61348d565b606a80546bffffffff00000000000000001916600160401b63ffffffff93841602179055606654908316906001600160a01b031661198761287b565b6001600160a01b03167f4d31e658dcf617bb3a3c8cf7c6dddb33f7030ac588e271631ecdb5d76c2e91ef846040516119bf9190615ae0565b60405180910390a450505050565b6119d561287b565b6001600160a01b03166119e66114e4565b6001600160a01b031614611a0c5760405162461bcd60e51b8152600401610884906154ec565b8060005b81811015611cb157611a2061445a565b848483818110611a2c57fe5b905060600201803603810190611a4291906148bb565b90506001816040015160ff161115611a6c5760405162461bcd60e51b815260040161088490615028565b80516001600160a01b0316611a935760405162461bcd60e51b8152600401610884906152d4565b6075548210611b2f576075805460018101825560009190915281517f9a8d93986a7b9e6294572ea6736696119c195c1a9f5eae642d3c5fcd44e49dea90910180546020840151604085015160ff16600160b01b0260ff60b01b1961ffff909216600160a01b0261ffff60a01b196001600160a01b039096166001600160a01b031990941693909317949094169190911716919091179055611c56565b611b3761445a565b60758381548110611b4457fe5b60009182526020918290206040805160608101825292909101546001600160a01b03808216808552600160a01b830461ffff1695850195909552600160b01b90910460ff1691830191909152845191935016141580611bb35750806020015161ffff16826020015161ffff1614155b80611bcc5750806040015160ff16826040015160ff1614155b15611c4d578160758481548110611bdf57fe5b6000918252602091829020835191018054928401516040909401516001600160a01b03199093166001600160a01b039092169190911761ffff60a01b1916600160a01b61ffff909416939093029290921760ff60b01b1916600160b01b60ff90921691909102179055611c54565b5050611ca9565b505b80600001516001600160a01b03167fc1bf93444a0055a24a7d0154b75fedf78edfe355c06a2ce8e47f9f39087205598260200151836040015185604051611c9f93929190615a18565b60405180910390a2505b600101611a10565b505b607554811015611d2e57607554600090611cce9060016134b7565b90506075805480611cdb57fe5b600082815260208120820160001990810180546001600160b81b031916905590910190915560405182917f99fa473fdf53414bcd014cf6e7509fc58c68f7b86174767faa6ad5100cd5bae591a250611cb3565b6000611d386134df565b90506103e8811115610cc45760405162461bcd60e51b815260040161088490615547565b6074546001600160a01b031681565b606654604080516318c1996d60e21b815290516000926001600160a01b03169163630665b4916004808301926020929190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190614922565b611df06114e4565b6001600160a01b0316611e0161287b565b6001600160a01b03161480611e3057506074546001600160a01b0316611e2561287b565b6001600160a01b0316145b80611e5557506073546001600160a01b0316611e4a61287b565b6001600160a01b0316145b611e715760405162461bcd60e51b815260040161088490614f5b565b611e7961287f565b606654604051636a3fd4f960e01b81526001600160a01b0390911690636a3fd4f990611ea9908690600401614b45565b60206040518083038186803b158015611ec157600080fd5b505afa158015611ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef991906147f7565b611f155760405162461bcd60e51b8152600401610884906155eb565b611f2f6001600160a01b0384166380ac58cd60e01b6128ed565b611f4b5760405162461bcd60e51b815260040161088490614de4565b611f56607084613571565b611f6557611f656070846135c2565b60005b81811015611f9457611f8c84848484818110611f8057fe5b9050602002013561368a565b600101611f68565b50826001600160a01b03167f51541dc4b4c08a16085809cccdc4cc77d8000b60fbb00142e57f236d842986758383604051611fd0929190614d1f565b60405180910390a2505050565b611fe561287b565b6001600160a01b0316611ff66114e4565b6001600160a01b03161461201c5760405162461bcd60e51b8152600401610884906154ec565b61202461287f565b610d64816137db565b607b5481565b6000610915612815565b6069546001600160a01b031681565b612054610834565b6120705760405162461bcd60e51b81526004016108849061597c565b612078610a9f565b6120945760405162461bcd60e51b81526004016108849061528e565b606954606a546040516313a54bf360e31b81526000926001600160a01b031691639d2a5f98916120cd9163ffffffff1690600401615ae0565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211f9190614922565b606a80546bffffffffffffffffffffffff191690556073549091506001600160a01b0316156121af57607354606d5460405163266fce1f60e11b81526001600160a01b0390921691634cdf9c3e9161217c91859190600401615a56565b600060405180830381600087803b15801561219657600080fd5b505af11580156121aa573d6000803e3d6000fd5b505050505b6121b881612e06565b6074546001600160a01b03161561223057607454606d54604051632ba8396360e11b81526001600160a01b039092169163575072c6916121fd91859190600401615a56565b600060405180830381600087803b15801561221757600080fd5b505af115801561222b573d6000803e3d6000fd5b505050505b61224061223b612d87565b6129f0565b606d5561224b61287b565b6001600160a01b03167f9c4163ece98173eab9a496c4db8bf3e2c8edcc5d2854377880597ccb858b7a9d826040516122839190614b3c565b60405180910390a2606d5461229661287b565b6001600160a01b03167fc61852c20f0b03b31d782f3022f2bf20322ac17ce66c5349fb6e24740cdd645660405160405180910390a350565b6122d661445a565b607582815481106122e357fe5b60009182526020918290206040805160608101825292909101546001600160a01b0381168352600160a01b810461ffff1693830193909352600160b01b90920460ff169181019190915292915050565b61233b61287b565b6001600160a01b031661234c6114e4565b6001600160a01b0316146123725760405162461bcd60e51b8152600401610884906154ec565b6001600160a01b0381166123985760405162461bcd60e51b815260040161088490614f15565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff168061240d575061240d612d8d565b8061241b575060005460ff16155b6124375760405162461bcd60e51b815260040161088490615360565b600054610100900460ff16158015612462576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0386166124885760405162461bcd60e51b815260040161088490615186565b6001600160a01b0385166124ae5760405162461bcd60e51b815260040161088490615729565b6001600160a01b0384166124d45760405162461bcd60e51b815260040161088490614fde565b6001600160a01b0383166124fa5760405162461bcd60e51b815260040161088490615215565b606680546001600160a01b038089166001600160a01b0319928316179092556067805488841690831617905560698054868416908316179055606880549287169290911691909117905561254d87612db1565b61255561384c565b61255f606e6138de565b60005b825181101561258f5761258783828151811061257a57fe5b6020026020010151612a37565b600101612562565b50606c879055606d8890556125a460706138de565b6125af6107086137db565b856001600160a01b03167ff9632d212436344a25150ff0c161dabf412aade556621c2dea146ca63ff643f58989888888886040516125f296959493929190615a64565b60405180910390a2606d5461260561287b565b6001600160a01b03167fc61852c20f0b03b31d782f3022f2bf20322ac17ce66c5349fb6e24740cdd645660405160405180910390a38015610cbf576000805461ff00191690555050505050505050565b61265d61287b565b6001600160a01b031661266e6114e4565b6001600160a01b0316146126945760405162461bcd60e51b8152600401610884906154ec565b60755460ff8216106126b85760405162461bcd60e51b8152600401610884906153ae565b6001826040015160ff1611156126e05760405162461bcd60e51b815260040161088490615028565b81516001600160a01b03166127075760405162461bcd60e51b8152600401610884906152d4565b8160758260ff168154811061271857fe5b600091825260208083208451920180549185015160409095015160ff16600160b01b0260ff60b01b1961ffff909616600160a01b0261ffff60a01b196001600160a01b039095166001600160a01b031990941693909317939093169190911793909316179091556127876134df565b90506103e88111156127ab5760405162461bcd60e51b815260040161088490615547565b82600001516001600160a01b03167fc1bf93444a0055a24a7d0154b75fedf78edfe355c06a2ce8e47f9f39087205598460200151856040015185604051611fd093929190615a37565b60405180604001604052806005815260200164332e342e3560d81b81525081565b6000806128206128d4565b9050600061282c612d87565b90508181111561284157600092505050610840565b61284b82826134b7565b9250505090565b600080612867670de0b6b3a764000085613922565b9050612873818461395c565b949350505050565b3390565b600061288961399e565b606a54909150640100000000900463ffffffff1615806128b85750606a54640100000000900463ffffffff1681105b610d645760405162461bcd60e51b8152600401610884906158a7565b6000610915606c54606d54612d6290919063ffffffff16565b60006128f8836139a2565b8015612909575061290983836139d5565b9392505050565b606080826000015467ffffffffffffffff8111801561292e57600080fd5b50604051908082528060200260200182016040528015612958578160200160208202803683370190505b50600160008181529085016020526040812054919250906001600160a01b03165b6001600160a01b0381161580159061299b57506001600160a01b038116600114155b156129e757808383815181106129ad57fe5b6001600160a01b03928316602091820292909201810191909152918116600090815260018088019093526040902054929091019116612979565b50909392505050565b600080612a14606c54612a0e606d54866134b790919063ffffffff16565b906139fb565b9050612909612a2e606c548361392290919063ffffffff16565b606d5490612d62565b612a49816001600160a01b0316613a2d565b612a655760405162461bcd60e51b8152600401610884906153f4565b606654604051636a3fd4f960e01b81526001600160a01b0390911690636a3fd4f990612a95908490600401614b45565b60206040518083038186803b158015612aad57600080fd5b505afa158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae591906147f7565b612b015760405162461bcd60e51b8152600401610884906155eb565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916060916001600160a01b03851691612b4591614b20565b600060405180830381855afa9150503d8060008114612b80576040519150601f19603f3d011682016040523d82523d6000602084013e612b85565b606091505b509150915081612ba75760405162461bcd60e51b81526004016108849061531d565b612bb2606e846135c2565b6040516001600160a01b038416907fbcd6d991f3416e288bf59a2997b423772937b62c7ea7dd1a54af7771de1f741890600090a2505050565b6001600160a01b038116600114801590612c0d57506001600160a01b03811615155b612c295760405162461bcd60e51b815260040161088490614e74565b6001600160a01b038281166000908152600185016020526040902054811690821614612c675760405162461bcd60e51b815260040161088490614e9d565b6001600160a01b039081166000818152600185016020526040808220805495851683529082208054959094166001600160a01b03199586161790935552805490911690558054600019019055565b6001600160a01b0381166000908152607260205260408120612cd69161447a565b6040516001600160a01b038216907fcd64d9dacd230c5ccf1278ea5332b0621aa28c950fb0e61c8fbc9e2011c88a3490600090a250565b60008111612d2d5760405162461bcd60e51b815260040161088490615474565b60768190556040517fc44c7222e8df09744ced394101df47e78dedb642d3065267bb388901de9df6d490610a7d908390614b3c565b6000828201838110156129095760405162461bcd60e51b815260040161088490614fa7565b607b5490565b600061132b30613a2d565b6000612da26128d4565b612daa612d87565b1015905090565b60008111612dd15760405162461bcd60e51b815260040161088490615070565b606c8190556040517f0d379c1a7282461e725a9dc2d74e65246c77e98ae93835e26c2f1654c48ee4ec90610a7d908390614b3c565b6066546040805163e6d8a94b60e01b815290516000926001600160a01b03169163e6d8a94b91600480830192602092919082900301818787803b158015612e4c57600080fd5b505af1158015612e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e849190614922565b9050612e8f81613a33565b9050606760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612edf57600080fd5b505afa158015612ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f179190614922565b612f4a576040517f3728feb3fc1ef1bf4a24036afbe7d34b59c551bf0d2ab5564e87ec1734fa80dd90600090a150610d64565b60795460765460ff9091169060608167ffffffffffffffff81118015612f6f57600080fd5b50604051908082528060200260200182016040528015612f99578160200160208202803683370190505b50607a54909150859060009081905b8583101561314457606754604051633b30414760e01b81526000916001600160a01b031690633b30414790612fe1908890600401614b3c565b60206040518083038186803b158015612ff957600080fd5b505afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190614573565b6001600160a01b03811660009081526078602052604090205490915060ff1661308c578086858060010196508151811061306757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050613105565b818360010193508310613105577fb5f728fcb182000eb8e953c15f6795f07b6cda75b35ef0b65645b53aac636945846040516130c89190614b3c565b60405180910390a1836130ff576040517f3728feb3fc1ef1bf4a24036afbe7d34b59c551bf0d2ab5564e87ec1734fa80dd90600090a15b50613144565b60008461020902866101f301016040516020016131229190614b3c565b60408051601f1981840301815291905280516020909101209550612fa8915050565b6131618560008151811061315457fe5b6020026020010151613ae0565b6000876131775761317289856139fb565b613181565b61318189886139fb565b905080156131bb5760005b848110156131b9576131b18782815181106131a357fe5b602002602001015183613c50565b60010161318c565b505b60775460ff161561336a5760006131d2606e613cbd565b90505b6001600160a01b0381161580159061320857506131f2606e613cda565b6001600160a01b0316816001600160a01b031614155b15613364576066546040516370a0823160e01b81526000916001600160a01b03808516926370a0823192613240921690600401614b45565b60206040518083038186803b15801561325857600080fd5b505afa15801561326c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132909190614922565b905060008a6132a8576132a382886139fb565b6132b2565b6132b2828b6139fb565b905080156133505760005b8781101561334e576066548a516001600160a01b0390911690632b0ab144908c90849081106132e857fe5b602002602001015186856040518463ffffffff1660e01b815260040161331093929190614bda565b600060405180830381600087803b15801561332a57600080fd5b505af115801561333e573d6000803e3d6000fd5b5050600190920191506132bd9050565b505b61335b606e84613ce0565b925050506131d5565b50613387565b6133878660008151811061337a57fe5b6020026020010151613d03565b50505050505050505050565b80158061341b5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906133c99030908690600401614b59565b60206040518083038186803b1580156133e157600080fd5b505afa1580156133f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134199190614922565b155b6134375760405162461bcd60e51b81526004016108849061580b565b610fbe8363095ea7b360e01b8484604051602401613456929190614c29565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613e4f565b600064010000000082106134b35760405162461bcd60e51b81526004016108849061565d565b5090565b6000828211156134d95760405162461bcd60e51b81526004016108849061514f565b50900390565b6075546000908190815b818160ff161015613569576134fc61445a565b60758260ff168154811061350c57fe5b60009182526020918290206040805160608101825292909101546001600160a01b0381168352600160a01b810461ffff16938301849052600160b01b900460ff1690820152915061355e908590612d62565b9350506001016134e9565b509091505090565b60006001600160a01b03821660011480159061359557506001600160a01b03821615155b80156129095750506001600160a01b03908116600090815260019290920160205260409091205416151590565b6001600160a01b0381166001148015906135e457506001600160a01b03811615155b6136005760405162461bcd60e51b815260040161088490614e74565b6001600160a01b038181166000908152600184016020526040902054161561363a5760405162461bcd60e51b815260040161088490615636565b60016000818152838201602052604080822080546001600160a01b039586168085529284208054969091166001600160a01b03199687161790559183905281549093169092179091558154019055565b6066546040516331a9108f60e11b81526001600160a01b0391821691841690636352211e906136bd908590600401614b3c565b60206040518083038186803b1580156136d557600080fd5b505afa1580156136e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370d9190614573565b6001600160a01b0316146137335760405162461bcd60e51b8152600401610884906159c3565b60005b6001600160a01b0383166000908152607260205260409020548110156137ae576001600160a01b038316600090815260726020526040902080548391908390811061377d57fe5b906000526020600020015414156137a65760405162461bcd60e51b815260040161088490615861565b600101613736565b506001600160a01b0390911660009081526072602090815260408220805460018101825590835291200155565b603c8163ffffffff16116138015760405162461bcd60e51b815260040161088490615930565b606b805463ffffffff191663ffffffff83811691909117918290556040517f4f27f6f220ffad585e728389bc2f0f6b74eeebeb43f95f53752a647cb6e7e68792610a7d921690615ae0565b600054610100900460ff16806138655750613865612d8d565b80613873575060005460ff16155b61388f5760405162461bcd60e51b815260040161088490615360565b600054610100900460ff161580156138ba576000805460ff1961ff0019909116610100171660011790555b6138c2613ede565b6138ca613f5f565b8015610d64576000805461ff001916905550565b8054156138fd5760405162461bcd60e51b815260040161088490615521565b60016000818152918101602052604090912080546001600160a01b0319169091179055565b600082613931575060006107e3565b8282028284828161393e57fe5b04146129095760405162461bcd60e51b8152600401610884906154ab565b600061290983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614039565b4390565b60006139b5826301ffc9a760e01b6139d5565b80156107e357506139ce826001600160e01b03196139d5565b1592915050565b60008060006139e48585614070565b915091508180156139f25750805b95945050505050565b6000808211613a1c5760405162461bcd60e51b815260040161088490615257565b818381613a2557fe5b049392505050565b3b151590565b6075546000908290825b81811015613ad757613a4d61445a565b60758281548110613a5a57fe5b600091825260208083206040805160608101825293909101546001600160a01b0381168452600160a01b810461ffff16928401839052600160b01b900460ff1690830152909250613aac908690614165565b9050613ac18260000151828460400151614179565b613acb87826134b7565b96505050600101613a3d565b50929392505050565b6000613aec6070613cbd565b90505b6001600160a01b03811615801590613b225750613b0c6070613cda565b6001600160a01b0316816001600160a01b031614155b15613c46576066546040516370a0823160e01b81526000916001600160a01b03808516926370a0823192613b5a921690600401614b45565b60206040518083038186803b158015613b7257600080fd5b505afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190614922565b90508015613c33576066546001600160a01b038381166000908152607260205260409081902090516316960d5560e01b815291909216916316960d5591613bf8918791879190600401614b73565b600060405180830381600087803b158015613c1257600080fd5b505af1158015613c26573d6000803e3d6000fd5b50505050613c3382612cb5565b613c3e607083613ce0565b915050613aef565b61101f6070614184565b60665460675460405163358dc31d60e11b81526001600160a01b0392831692636b1b863a92613c8792879287921690600401614c42565b600060405180830381600087803b158015613ca157600080fd5b505af1158015613cb5573d6000803e3d6000fd5b505050505050565b60016000818152910160205260409020546001600160a01b031690565b50600190565b6001600160a01b0380821660009081526001840160205260409020541692915050565b6000613d0f606e613cbd565b90505b6001600160a01b03811615801590613d455750613d2f606e613cda565b6001600160a01b0316816001600160a01b031614155b1561101f576066546040516370a0823160e01b81526000916001600160a01b03808516926370a0823192613d7d921690600401614b45565b60206040518083038186803b158015613d9557600080fd5b505afa158015613da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcd9190614922565b90508015613e3c57606654604051630ac2ac5160e21b81526001600160a01b0390911690632b0ab14490613e0990869086908690600401614bda565b600060405180830381600087803b158015613e2357600080fd5b505af1158015613e37573d6000803e3d6000fd5b505050505b613e47606e83613ce0565b915050613d12565b6060613ea4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142209092919063ffffffff16565b805190915015610fbe5780806020019051810190613ec291906147f7565b610fbe5760405162461bcd60e51b81526004016108849061576e565b600054610100900460ff1680613ef75750613ef7612d8d565b80613f05575060005460ff16155b613f215760405162461bcd60e51b815260040161088490615360565b600054610100900460ff161580156138ca576000805460ff1961ff0019909116610100171660011790558015610d64576000805461ff001916905550565b600054610100900460ff1680613f785750613f78612d8d565b80613f86575060005460ff16155b613fa25760405162461bcd60e51b815260040161088490615360565b600054610100900460ff16158015613fcd576000805460ff1961ff0019909116610100171660011790555b6000613fd761287b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610d64576000805461ff001916905550565b6000818361405a5760405162461bcd60e51b81526004016108849190614db1565b50600083858161406657fe5b0495945050505050565b60008060606301ffc9a760e01b8460405160240161408e9190614d9c565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060866001600160a01b0316617530846040516140e29190614b20565b6000604051808303818686fa925050503d806000811461411e576040519150601f19603f3d011682016040523d82523d6000602084013e614123565b606091505b5091509150602081511015614141576000809450945050505061415e565b818180602001905181019061415691906147f7565b945094505050505b9250929050565b600061290961ffff831684026103e86139fb565b610fbe83838361422f565b6001600081815290820160205260409020546001600160a01b03165b6001600160a01b038116158015906141c257506001600160a01b038116600114155b156141f8576001600160a01b039081166000908152600183016020526040902080546001600160a01b03198116909155166141a0565b50600160008181528282016020526040812080546001600160a01b0319169092179091559055565b60606128738484600085614360565b60665460408051634eb1c24560e11b815290516060926001600160a01b031691639d63848a916004808301926000929190829003018186803b15801561427457600080fd5b505afa158015614288573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142b0919081019061468d565b905080518260ff1611156142d65760405162461bcd60e51b8152600401610884906156da565b6000818360ff16815181106142e757fe5b602090810291909101015160665460405163358dc31d60e11b81529192506001600160a01b031690636b1b863a9061432790889088908690600401614c42565b600060405180830381600087803b15801561434157600080fd5b505af1158015614355573d6000803e3d6000fd5b505050505050505050565b6060824710156143825760405162461bcd60e51b8152600401610884906151cf565b61438b85613a2d565b6143a75760405162461bcd60e51b8152600401610884906156a3565b60006060866001600160a01b031685876040516143c49190614b20565b60006040518083038185875af1925050503d8060008114614401576040519150601f19603f3d011682016040523d82523d6000602084013e614406565b606091505b5091509150614416828286614421565b979650505050505050565b60608315614430575081612909565b8251156144405782518084602001fd5b8160405162461bcd60e51b81526004016108849190614db1565b604080516060810182526000808252602082018190529181019190915290565b5080546000825590600052602060002090810190610d6491905b808211156134b35760008155600101614494565b60008083601f8401126144b9578081fd5b50813567ffffffffffffffff8111156144d0578182fd5b602083019150836020808302850101111561415e57600080fd5b6000606082840312156144fb578081fd5b6145056060615af1565b9050813561451281615b64565b8152602082013561ffff8116811461452957600080fd5b602082015261453b8360408401614546565b604082015292915050565b803560ff811681146107e357600080fd5b600060208284031215614568578081fd5b813561290981615b64565b600060208284031215614584578081fd5b815161290981615b64565b600080600080608085870312156145a4578283fd5b84356145af81615b64565b935060208501356145bf81615b64565b92506040850135915060608501356145d681615b64565b939692955090935050565b600080604083850312156145f3578081fd5b82356145fe81615b64565b9150602083013561460e81615b79565b809150509250929050565b6000806040838503121561462b578182fd5b825161463681615b64565b6020939093015192949293505050565b6000806000806080858703121561465b578182fd5b843561466681615b64565b935060208501359250604085013561467d81615b64565b915060608501356145d681615b64565b6000602080838503121561469f578182fd5b825167ffffffffffffffff8111156146b5578283fd5b8301601f810185136146c5578283fd5b80516146d86146d382615b18565b615af1565b81815283810190838501858402850186018910156146f4578687fd5b8694505b8385101561471f57805161470b81615b64565b8352600194909401939185019185016146f8565b50979650505050505050565b6000806020838503121561473d578182fd5b823567ffffffffffffffff811115614753578283fd5b61475f858286016144a8565b90969095509350505050565b6000806020838503121561477d578182fd5b823567ffffffffffffffff80821115614794578384fd5b818501915085601f8301126147a7578384fd5b8135818111156147b5578485fd5b8660206060830285010111156147c9578485fd5b60209290920196919550909350505050565b6000602082840312156147ec578081fd5b813561290981615b79565b600060208284031215614808578081fd5b815161290981615b79565b600060208284031215614824578081fd5b81356001600160e01b031981168114612909578182fd5b6000806040838503121561484d578182fd5b823561485881615b64565b9150602083013561460e81615b64565b60008060006040848603121561487c578081fd5b833561488781615b64565b9250602084013567ffffffffffffffff8111156148a2578182fd5b6148ae868287016144a8565b9497909650939450505050565b6000606082840312156148cc578081fd5b61290983836144ea565b600080608083850312156148e8578182fd5b6148f284846144ea565b91506149018460608501614546565b90509250929050565b60006020828403121561491b578081fd5b5035919050565b600060208284031215614933578081fd5b5051919050565b600080600080600080600060e0888a031215614954578485fd5b873596506020808901359650604089013561496e81615b64565b9550606089013561497e81615b64565b9450608089013561498e81615b64565b935060a089013561499e81615b64565b925060c089013567ffffffffffffffff8111156149b9578283fd5b8901601f81018b136149c9578283fd5b80356149d76146d382615b18565b81815283810190838501858402850186018f10156149f3578687fd5b8694505b83851015614a1e578035614a0a81615b64565b8352600194909401939185019185016149f7565b50809550505050505092959891949750929550565b600080600080600080600060e0888a031215614a4d578081fd5b87359650602088013595506040880135614a6681615b64565b94506060880135614a7681615b64565b93506080880135614a8681615b64565b925060a0880135614a9681615b64565b8092505060c0880135905092959891949750929550565b600060208284031215614abe578081fd5b813561290981615b87565b60008060408385031215614adb578182fd5b8251614ae681615b87565b602084015190925061460e81615b87565b80516001600160a01b0316825260208082015161ffff169083015260409081015160ff16910152565b60008251614b32818460208701615b38565b9190910192915050565b90815260200190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03848116825283166020808301919091526060604083018190528354908301819052600084815282812090929091608085019190845b81811015614bcc57845484526001948501949383019301614bb0565b509198975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529083166040830152909116606082015260800190565b6020808252825182820181905260009190848201906040850190845b81811015614cd15783516001600160a01b031683529284019291840191600101614cac565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614cd157614d0c838551614af7565b9284019260609290920191600101614cf9565b6020808252810182905260006001600160fb1b03831115614d3e578081fd5b60208302808560408501379190910160400190815292915050565b6020808252825182820181905260009190848201906040850190845b81811015614cd157835183529284019291840191600101614d75565b901515815260200190565b6001600160e01b031991909116815260200190565b6000602082528251806020840152614dd0816040850160208701615b38565b601f01601f19169190910160400192915050565b60208082526024908201527f506572696f6469635072697a6553747261746567792f6572633732312d696e76604082015263185b1a5960e21b606082015260800190565b6020808252602c908201527f506572696f6469635072697a6553747261746567792f746f6b656e2d6c69737460408201526b195b995c8b5a5b9d985b1a5960a21b606082015260800190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b602080825260139082015272496e76616c696420707265764164647265737360681b604082015260600190565b6020808252602b908201527f506572696f6469635072697a6553747261746567792f7072697a652d7065726960408201526a37b216b737ba16b7bb32b960a91b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252602c908201527f506572696f6469635072697a6553747261746567792f6f6e6c792d6f776e657260408201526b16b7b916b634b9ba32b732b960a11b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602a908201527f506572696f6469635072697a6553747261746567792f73706f6e736f72736869604082015269702d6e6f742d7a65726f60b01b606082015260800190565b60208082526028908201527f4d756c7469706c6557696e6e6572732f696e76616c69642d7072697a6573706c60408201526734ba16ba37b5b2b760c11b606082015260800190565b60208082526034908201527f506572696f6469635072697a6553747261746567792f7072697a652d706572696040820152736f642d677265617465722d7468616e2d7a65726f60601b606082015260800190565b60208082526025908201527f506572696f6469635072697a6553747261746567792f6f6e6c792d7072697a656040820152640b5c1bdbdb60da1b606082015260800190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f7472616e736665722d746040820152653796b9b2b63360d11b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526029908201527f506572696f6469635072697a6553747261746567792f7072697a652d706f6f6c6040820152682d6e6f742d7a65726f60b81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526022908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d7a65604082015261726f60f01b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d636f6040820152656d706c65746560d01b606082015260800190565b60208082526029908201527f4d756c7469706c6557696e6e6572732f696e76616c69642d7072697a6573706c6040820152681a5d0b5d185c99d95d60ba1b606082015260800190565b60208082526023908201527f506572696f6469635072697a6553747261746567792f65726332302d696e76616040820152621b1a5960ea1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526026908201527f4d756c7469706c6557696e6e6572732f6e6f6e6578697374656e742d7072697a604082015265195cdc1b1a5d60d21b606082015260800190565b6020808252818101527f506572696f6469635072697a6553747261746567792f65726332302d6e756c6c604082015260600190565b6020808252602b908201527f506572696f6469635072697a6553747261746567792f726e672d616c7265616460408201526a1e4b5c995c5d595cdd195960aa1b606082015260800190565b6020808252601f908201527f4d756c7469706c6557696e6e6572732f77696e6e6572732d6774652d6f6e6500604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b105b1c9958591e481a5b9a5d60a21b604082015260600190565b60208082526033908201527f4d756c7469706c6557696e6e6572732f696e76616c69642d7072697a6573706c6040820152721a5d0b5c195c98d95b9d1859d94b5d1bdd185b606a1b606082015260800190565b60208082526031908201527f506572696f6469635072697a6553747261746567792f6265666f72654177617260408201527019131a5cdd195b995c8b5a5b9d985b1a59607a1b606082015260800190565b6020808252602b908201527f506572696f6469635072697a6553747261746567792f63616e6e6f742d61776160408201526a1c990b595e1d195c9b985b60aa1b606082015260800190565b6020808252600d908201526c105b1c9958591e481859191959609a1b604082015260600190565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602f908201527f506572696f6469635072697a6553747261746567792f61776172642d696e766160408201526e0d8d2c85ae8ded6cadc5ad2dcc8caf608b1b606082015260800190565b60208082526025908201527f506572696f6469635072697a6553747261746567792f7469636b65742d6e6f746040820152642d7a65726f60d81b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526033908201527f506572696f6469635072697a6553747261746567792f7072697a6553747261746040820152721959de531a5cdd195b995c8b5a5b9d985b1a59606a1b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f6572633732312d6475706040820152656c696361746560d01b606082015260800190565b60208082526023908201527f506572696f6469635072697a6553747261746567792f726e672d696e2d666c6960408201526219da1d60ea1b606082015260800190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d74696040820152651b59591bdd5d60d21b606082015260800190565b6020808252602c908201527f506572696f6469635072697a6553747261746567792f726e672d74696d656f7560408201526b742d67742d36302d7365637360a01b606082015260800190565b60208082526027908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d72656040820152661c5d595cdd195960ca1b606082015260800190565b60208082526027908201527f506572696f6469635072697a6553747261746567792f756e617661696c61626c6040820152663296ba37b5b2b760c91b606082015260800190565b606081016107e38284614af7565b61ffff93909316835260ff919091166020830152604082015260600190565b61ffff93909316835260ff918216602084015216604082015260600190565b918252602082015260400190565b86815260208082018790526001600160a01b0386811660408401528581166060840152848116608084015260c060a08401819052845190840181905260009285810192909160e0860190855b81811015615ace578551841683529484019491840191600101615ab0565b50909c9b505050505050505050505050565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615b1057600080fd5b604052919050565b600067ffffffffffffffff821115615b2e578081fd5b5060209081020190565b60005b83811015615b53578181015183820152602001615b3b565b83811115610cc45750506000910152565b6001600160a01b0381168114610d6457600080fd5b8015158114610d6457600080fd5b63ffffffff81168114610d6457600080fdfea26469706673582212200b04a034fdc9b603434ff2e14bbf9df827851a7ec270ad4d35335f3752edeb5f64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103e65760003560e01c80637f2be9fc1161020a578063b024468211610125578063d18e81b3116100b8578063eefc8ad111610087578063eefc8ad114610762578063f2fde38b14610782578063f97700e214610795578063fbf0953e146107a8578063ffa1ad74146107bb576103e6565b8063d18e81b314610742578063d5ad6bf61461074a578063d605787b14610752578063dfb2f13b1461075a576103e6565b8063c2f19ee8116100f4578063c2f19ee81461070c578063c42b42a014610714578063c48ddbcb1461071c578063c68532701461072f576103e6565b8063b0244682146106cb578063b2210957146106de578063b9ee1e05146106f1578063c25a9c32146106f9576103e6565b80638e204c431161019d57806395e5f9ee1161016c57806395e5f9ee146106a05780639dafafb0146106a8578063a4e075ca146106b0578063acca5b95146106c3576103e6565b80638e204c431461065257806391c05b0b1461066557806394144c6b146106785780639417783f14610680576103e6565b80638aa3ec6f116101d95780638aa3ec6f1461061a5780638acfaca91461062d5780638d5f10c4146106355780638da5cb5b1461064a576103e6565b80637f2be9fc146105d95780637f4296d7146105ec578063876f5c7e146105ff578063884a444814610607576103e6565b80634e5d08e0116103055780636be51c4f116102985780636f46f221116102675780636f46f221146105b1578063715018a6146105b9578063719ce73e146105c157806372f33ea9146105c9578063738bbea8146105d1576103e6565b80636be51c4f146105865780636bea53441461058e5780636cc25db7146105965780636dfb03861461059e576103e6565b806362c77a61116102d457806362c77a61146105505780636696822114610558578063671137c41461056b5780636a74f1071461057e576103e6565b80634e5d08e01461050f578063500db70d1461052257806352a301091461052a578063605e25ac1461053d576103e6565b80632c8fe73d1161037d57806347bed9981161034c57806347bed998146104d95780634aba4f6b146104ec5780634c169f4f146104f45780634d7f3db0146104fc576103e6565b80632c8fe73d1461049657806330fcdf411461049e57806338a9b4b6146104b157806342d09209146104c4576103e6565b8063111070e4116103b9578063111070e414610451578063152d308c1461045957806322f8e5661461046c5780632a7ad60914610481576103e6565b806301b48e34146103eb57806301ffc9a7146104145780630d847fc4146104345780630faf125f14610449575b600080fd5b6103fe6103f936600461490a565b6107d0565b60405161040b9190614b3c565b60405180910390f35b610427610422366004614813565b6107e9565b60405161040b9190614d91565b61043c61081f565b60405161040b9190614b45565b6103fe61082e565b610427610834565b6104276104673660046145e1565b610843565b61047f61047a36600461490a565b6108fa565b005b6104896108ff565b60405161040b9190615ae0565b6103fe61090b565b61047f6104ac366004614557565b61091a565b61047f6104bf3660046147db565b6109f2565b6104cc610a88565b60405161040b9190614c90565b6103fe6104e736600461490a565b610a94565b610427610a9f565b61047f610b28565b61047f61050a366004614646565b610bf2565b61047f61051d366004614557565b610cca565b61043c610d67565b61042761053836600461490a565b610d76565b61047f61054b366004614557565b610e04565b6104cc610ee5565b61047f61056636600461472b565b610ef1565b61047f61057936600461483b565b610fc3565b610427611023565b61043c61103c565b61048961104b565b61043c61105f565b61047f6105ac36600461490a565b61106e565b6104276110be565b61047f6110c7565b61043c611150565b6103fe61115f565b610427611165565b61047f6105e7366004614a33565b6111b8565b61047f6105fa366004614557565b61125c565b610427611312565b61047f61061536600461490a565b611331565b61047f610628366004614557565b611381565b6103fe611459565b61063d61145f565b60405161040b9190614cdd565b61043c6114e4565b610427610660366004614557565b6114f3565b61047f61067336600461490a565b611508565b6103fe611511565b61069361068e366004614557565b611517565b60405161040b9190614d59565b610427611583565b61042761158d565b6104276106be3660046147db565b611596565b61048961161d565b61047f6106d936600461483b565b611629565b61047f6106ec36600461458f565b6116b4565b61047f611785565b61047f61070736600461476b565b6119cd565b61043c611d5c565b6103fe611d6b565b61047f61072a366004614868565b611de8565b61047f61073d366004614aad565b611fdd565b6103fe61202d565b6103fe612033565b61043c61203d565b61047f61204c565b61077561077036600461490a565b6122ce565b60405161040b9190615a0a565b61047f610790366004614557565b612333565b61047f6107a336600461493a565b6123f4565b61047f6107b63660046148d6565b612655565b6107c36127f4565b60405161040b9190614db1565b60006107e36107dd612815565b83612852565b92915050565b60006001600160e01b031982166301ffc9a760e01b14806107e35750506001600160e01b031916600162a1cb1960e01b03191490565b6073546001600160a01b031681565b607a5481565b606a5463ffffffff1615155b90565b600061084d61287b565b6001600160a01b031661085e6114e4565b6001600160a01b03161461088d5760405162461bcd60e51b8152600401610884906154ec565b60405180910390fd5b61089561287f565b6001600160a01b03831660008181526078602052604090819020805460ff1916851515179055517fd1ac9a365c0e3bfad562e0a809a5ded3842a2b489f839b3327e4e34ee0128f28906108e9908590614d91565b60405180910390a250600192915050565b607b55565b606a5463ffffffff1690565b60006109156128d4565b905090565b61092261287b565b6001600160a01b03166109336114e4565b6001600160a01b0316146109595760405162461bcd60e51b8152600401610884906154ec565b61096161287f565b6001600160a01b038116158061098c575061098c6001600160a01b03821663266fce1f60e11b6128ed565b6109a85760405162461bcd60e51b81526004016108849061559a565b607380546001600160a01b0319166001600160a01b0383169081179091556040517fc4feff61630891ea2cb42a54fbe3ff2e65422f2ed17323ac6b65f4521112e87e90600090a250565b6109fa61287b565b6001600160a01b0316610a0b6114e4565b6001600160a01b031614610a315760405162461bcd60e51b8152600401610884906154ec565b610a3961287f565b6077805460ff191682151517908190556040517f6959d02e8fb6264d1d39bf37f1e725001f342714933cf38f8627a2442efc43fd91610a7d9160ff90911690614d91565b60405180910390a150565b60606109156070612910565b60006107e3826129f0565b606954606a54604051630e866e6f60e21b81526000926001600160a01b031691633a19b9bc91610ad89163ffffffff1690600401615ae0565b60206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091591906147f7565b610b30611165565b610b4c5760405162461bcd60e51b8152600401610884906158ea565b606a80546bffffffffffffffffffffffff19811690915560405163ffffffff80831692640100000000900416907fee6702c46c5618e6fc7e625c71f4c85df9c91d456cb16a3aea71ab83b1fee00590600090a160665460405163ffffffff8416916001600160a01b03169033907fd50026ee0824513af20cdf5e72d1fbfbe8fd646ee0576378e080326f1a695e5890610be6908690615ae0565b60405180910390a45050565b6066546001600160a01b0316610c0661287b565b6001600160a01b031614610c2c5760405162461bcd60e51b8152600401610884906150c4565b6067546001600160a01b0383811691161415610c4a57610c4a61287f565b6065546001600160a01b031615610cc4576065546040516304d7f3db60e41b81526001600160a01b0390911690634d7f3db090610c91908790879087908790600401614c65565b600060405180830381600087803b158015610cab57600080fd5b505af1158015610cbf573d6000803e3d6000fd5b505050505b50505050565b610cd26114e4565b6001600160a01b0316610ce361287b565b6001600160a01b03161480610d1257506074546001600160a01b0316610d0761287b565b6001600160a01b0316145b80610d3757506073546001600160a01b0316610d2c61287b565b6001600160a01b0316145b610d535760405162461bcd60e51b815260040161088490614f5b565b610d5b61287f565b610d6481612a37565b50565b6068546001600160a01b031681565b6000610d8061287b565b6001600160a01b0316610d916114e4565b6001600160a01b031614610db75760405162461bcd60e51b8152600401610884906154ec565b610dbf61287f565b607a8290556040517f63e4e34f49d12428c03e04e61340c7167e36eb0ff6f0b1970c7544026179403990610df4908490614b3c565b60405180910390a1506001919050565b610e0c61287b565b6001600160a01b0316610e1d6114e4565b6001600160a01b031614610e435760405162461bcd60e51b8152600401610884906154ec565b610e4b61287f565b6001600160a01b0381161580610e795750610e796001600160a01b038216600162a1cb1960e01b03196128ed565b610e955760405162461bcd60e51b815260040161088490614e28565b606580546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f9fc437aa70ad4ee5f33f6772bf338eed41e21b95435820817ab8b4df161ce4dd90600090a250565b6060610915606e612910565b610ef96114e4565b6001600160a01b0316610f0a61287b565b6001600160a01b03161480610f3957506074546001600160a01b0316610f2e61287b565b6001600160a01b0316145b80610f5e57506073546001600160a01b0316610f5361287b565b6001600160a01b0316145b610f7a5760405162461bcd60e51b815260040161088490614f5b565b610f8261287f565b60005b81811015610fbe57610fb6838383818110610f9c57fe5b9050602002016020810190610fb19190614557565b612a37565b600101610f85565b505050565b610fcb61287b565b6001600160a01b0316610fdc6114e4565b6001600160a01b0316146110025760405162461bcd60e51b8152600401610884906154ec565b61100a61287f565b61101660708284612beb565b61101f82612cb5565b5050565b600061102d610834565b80156109155750610915610a9f565b6065546001600160a01b031681565b606a54640100000000900463ffffffff1690565b6067546001600160a01b031681565b61107661287b565b6001600160a01b03166110876114e4565b6001600160a01b0316146110ad5760405162461bcd60e51b8152600401610884906154ec565b6110b561287f565b610d6481612d0d565b60795460ff1681565b6110cf61287b565b6001600160a01b03166110e06114e4565b6001600160a01b0316146111065760405162461bcd60e51b8152600401610884906154ec565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6066546001600160a01b031681565b606d5481565b606a54600090600160401b900463ffffffff1661118457506000610840565b606a54606b546111a89163ffffffff91821691600160401b909104811690612d6216565b6111b0612d87565b119050610840565b600054610100900460ff16806111d157506111d1612d8d565b806111df575060005460ff16155b6111fb5760405162461bcd60e51b815260040161088490615360565b600054610100900460ff16158015611226576000805460ff1961ff0019909116610100171660011790555b6060611237898989898989876123f4565b61124083612d0d565b508015610cbf576000805461ff00191690555050505050505050565b61126461287b565b6001600160a01b03166112756114e4565b6001600160a01b03161461129b5760405162461bcd60e51b8152600401610884906154ec565b6112a361287f565b6112ab610834565b156112c85760405162461bcd60e51b8152600401610884906158a7565b606980546001600160a01b0319166001600160a01b0383169081179091556040517ff935763cc7c57ee8ed6318ed71e756cca0731294c9f46ff5b386f36d6ff1417a90600090a250565b600061131c612d98565b8015610915575061132b610834565b15905090565b61133961287b565b6001600160a01b031661134a6114e4565b6001600160a01b0316146113705760405162461bcd60e51b8152600401610884906154ec565b61137861287f565b610d6481612db1565b61138961287b565b6001600160a01b031661139a6114e4565b6001600160a01b0316146113c05760405162461bcd60e51b8152600401610884906154ec565b6113c861287f565b6001600160a01b03811615806113f357506113f36001600160a01b038216632ba8396360e11b6128ed565b61140f5760405162461bcd60e51b8152600401610884906157b8565b607480546001600160a01b0319166001600160a01b0383169081179091556040517fda05d50a3a1ec0ffab059f1d457ae59f68ccfb3ffbb4dad283c516f9103d584b90600090a250565b60765490565b60606075805480602002602001604051908101604052809291908181526020016000905b828210156114db57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810461ffff1683850152600160b01b900460ff1690820152825260019092019101611483565b50505050905090565b6033546001600160a01b031690565b60786020526000908152604090205460ff1681565b610d6481612e06565b606c5481565b6001600160a01b03811660009081526072602090815260409182902080548351818402810184019094528084526060939283018282801561157757602002820191906000526020600020905b815481526020019060010190808311611563575b50505050509050919050565b6000610915612d98565b60775460ff1681565b60006115a061287b565b6001600160a01b03166115b16114e4565b6001600160a01b0316146115d75760405162461bcd60e51b8152600401610884906154ec565b6115df61287f565b6079805460ff19168315151790556040517f2b4b6ffe286f7ce4ccc6b136bb14987b0a00092174d88938a0c667a104a4a73190610df4908490614d91565b606b5463ffffffff1681565b61163161287b565b6001600160a01b03166116426114e4565b6001600160a01b0316146116685760405162461bcd60e51b8152600401610884906154ec565b61167061287f565b61167c606e8284612beb565b6040516001600160a01b038316907f58982464497acdab11ad29d39907e076b0d3b8daf1d9b734174c7c3a2a0e8c7490600090a25050565b6066546001600160a01b03166116c861287b565b6001600160a01b0316146116ee5760405162461bcd60e51b8152600401610884906150c4565b826001600160a01b0316846001600160a01b031614156117205760405162461bcd60e51b815260040161088490615109565b6067546001600160a01b038281169116141561173e5761173e61287f565b6065546001600160a01b031615610cc45760655460405163b221095760e01b81526001600160a01b039091169063b221095790610c91908790879087908790600401614bfe565b61178d612d98565b6117a95760405162461bcd60e51b815260040161088490614eca565b6117b1610834565b156117ce5760405162461bcd60e51b815260040161088490615429565b60695460408051630d37b53760e01b8152815160009384936001600160a01b0390911692630d37b5379260048083019392829003018186803b15801561181357600080fd5b505afa158015611827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184b9190614619565b90925090506001600160a01b038216158015906118685750600081115b1561188757606954611887906001600160a01b03848116911683613393565b6069546040805163433c53d960e11b8152815160009384936001600160a01b0390911692638678a7b2926004808301939282900301818787803b1580156118cd57600080fd5b505af11580156118e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119059190614ac9565b606a805463ffffffff8084166401000000000267ffffffff000000001991861663ffffffff199093169290921716179055909250905061194b611946612d87565b61348d565b606a80546bffffffff00000000000000001916600160401b63ffffffff93841602179055606654908316906001600160a01b031661198761287b565b6001600160a01b03167f4d31e658dcf617bb3a3c8cf7c6dddb33f7030ac588e271631ecdb5d76c2e91ef846040516119bf9190615ae0565b60405180910390a450505050565b6119d561287b565b6001600160a01b03166119e66114e4565b6001600160a01b031614611a0c5760405162461bcd60e51b8152600401610884906154ec565b8060005b81811015611cb157611a2061445a565b848483818110611a2c57fe5b905060600201803603810190611a4291906148bb565b90506001816040015160ff161115611a6c5760405162461bcd60e51b815260040161088490615028565b80516001600160a01b0316611a935760405162461bcd60e51b8152600401610884906152d4565b6075548210611b2f576075805460018101825560009190915281517f9a8d93986a7b9e6294572ea6736696119c195c1a9f5eae642d3c5fcd44e49dea90910180546020840151604085015160ff16600160b01b0260ff60b01b1961ffff909216600160a01b0261ffff60a01b196001600160a01b039096166001600160a01b031990941693909317949094169190911716919091179055611c56565b611b3761445a565b60758381548110611b4457fe5b60009182526020918290206040805160608101825292909101546001600160a01b03808216808552600160a01b830461ffff1695850195909552600160b01b90910460ff1691830191909152845191935016141580611bb35750806020015161ffff16826020015161ffff1614155b80611bcc5750806040015160ff16826040015160ff1614155b15611c4d578160758481548110611bdf57fe5b6000918252602091829020835191018054928401516040909401516001600160a01b03199093166001600160a01b039092169190911761ffff60a01b1916600160a01b61ffff909416939093029290921760ff60b01b1916600160b01b60ff90921691909102179055611c54565b5050611ca9565b505b80600001516001600160a01b03167fc1bf93444a0055a24a7d0154b75fedf78edfe355c06a2ce8e47f9f39087205598260200151836040015185604051611c9f93929190615a18565b60405180910390a2505b600101611a10565b505b607554811015611d2e57607554600090611cce9060016134b7565b90506075805480611cdb57fe5b600082815260208120820160001990810180546001600160b81b031916905590910190915560405182917f99fa473fdf53414bcd014cf6e7509fc58c68f7b86174767faa6ad5100cd5bae591a250611cb3565b6000611d386134df565b90506103e8811115610cc45760405162461bcd60e51b815260040161088490615547565b6074546001600160a01b031681565b606654604080516318c1996d60e21b815290516000926001600160a01b03169163630665b4916004808301926020929190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190614922565b611df06114e4565b6001600160a01b0316611e0161287b565b6001600160a01b03161480611e3057506074546001600160a01b0316611e2561287b565b6001600160a01b0316145b80611e5557506073546001600160a01b0316611e4a61287b565b6001600160a01b0316145b611e715760405162461bcd60e51b815260040161088490614f5b565b611e7961287f565b606654604051636a3fd4f960e01b81526001600160a01b0390911690636a3fd4f990611ea9908690600401614b45565b60206040518083038186803b158015611ec157600080fd5b505afa158015611ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef991906147f7565b611f155760405162461bcd60e51b8152600401610884906155eb565b611f2f6001600160a01b0384166380ac58cd60e01b6128ed565b611f4b5760405162461bcd60e51b815260040161088490614de4565b611f56607084613571565b611f6557611f656070846135c2565b60005b81811015611f9457611f8c84848484818110611f8057fe5b9050602002013561368a565b600101611f68565b50826001600160a01b03167f51541dc4b4c08a16085809cccdc4cc77d8000b60fbb00142e57f236d842986758383604051611fd0929190614d1f565b60405180910390a2505050565b611fe561287b565b6001600160a01b0316611ff66114e4565b6001600160a01b03161461201c5760405162461bcd60e51b8152600401610884906154ec565b61202461287f565b610d64816137db565b607b5481565b6000610915612815565b6069546001600160a01b031681565b612054610834565b6120705760405162461bcd60e51b81526004016108849061597c565b612078610a9f565b6120945760405162461bcd60e51b81526004016108849061528e565b606954606a546040516313a54bf360e31b81526000926001600160a01b031691639d2a5f98916120cd9163ffffffff1690600401615ae0565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211f9190614922565b606a80546bffffffffffffffffffffffff191690556073549091506001600160a01b0316156121af57607354606d5460405163266fce1f60e11b81526001600160a01b0390921691634cdf9c3e9161217c91859190600401615a56565b600060405180830381600087803b15801561219657600080fd5b505af11580156121aa573d6000803e3d6000fd5b505050505b6121b881612e06565b6074546001600160a01b03161561223057607454606d54604051632ba8396360e11b81526001600160a01b039092169163575072c6916121fd91859190600401615a56565b600060405180830381600087803b15801561221757600080fd5b505af115801561222b573d6000803e3d6000fd5b505050505b61224061223b612d87565b6129f0565b606d5561224b61287b565b6001600160a01b03167f9c4163ece98173eab9a496c4db8bf3e2c8edcc5d2854377880597ccb858b7a9d826040516122839190614b3c565b60405180910390a2606d5461229661287b565b6001600160a01b03167fc61852c20f0b03b31d782f3022f2bf20322ac17ce66c5349fb6e24740cdd645660405160405180910390a350565b6122d661445a565b607582815481106122e357fe5b60009182526020918290206040805160608101825292909101546001600160a01b0381168352600160a01b810461ffff1693830193909352600160b01b90920460ff169181019190915292915050565b61233b61287b565b6001600160a01b031661234c6114e4565b6001600160a01b0316146123725760405162461bcd60e51b8152600401610884906154ec565b6001600160a01b0381166123985760405162461bcd60e51b815260040161088490614f15565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff168061240d575061240d612d8d565b8061241b575060005460ff16155b6124375760405162461bcd60e51b815260040161088490615360565b600054610100900460ff16158015612462576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0386166124885760405162461bcd60e51b815260040161088490615186565b6001600160a01b0385166124ae5760405162461bcd60e51b815260040161088490615729565b6001600160a01b0384166124d45760405162461bcd60e51b815260040161088490614fde565b6001600160a01b0383166124fa5760405162461bcd60e51b815260040161088490615215565b606680546001600160a01b038089166001600160a01b0319928316179092556067805488841690831617905560698054868416908316179055606880549287169290911691909117905561254d87612db1565b61255561384c565b61255f606e6138de565b60005b825181101561258f5761258783828151811061257a57fe5b6020026020010151612a37565b600101612562565b50606c879055606d8890556125a460706138de565b6125af6107086137db565b856001600160a01b03167ff9632d212436344a25150ff0c161dabf412aade556621c2dea146ca63ff643f58989888888886040516125f296959493929190615a64565b60405180910390a2606d5461260561287b565b6001600160a01b03167fc61852c20f0b03b31d782f3022f2bf20322ac17ce66c5349fb6e24740cdd645660405160405180910390a38015610cbf576000805461ff00191690555050505050505050565b61265d61287b565b6001600160a01b031661266e6114e4565b6001600160a01b0316146126945760405162461bcd60e51b8152600401610884906154ec565b60755460ff8216106126b85760405162461bcd60e51b8152600401610884906153ae565b6001826040015160ff1611156126e05760405162461bcd60e51b815260040161088490615028565b81516001600160a01b03166127075760405162461bcd60e51b8152600401610884906152d4565b8160758260ff168154811061271857fe5b600091825260208083208451920180549185015160409095015160ff16600160b01b0260ff60b01b1961ffff909616600160a01b0261ffff60a01b196001600160a01b039095166001600160a01b031990941693909317939093169190911793909316179091556127876134df565b90506103e88111156127ab5760405162461bcd60e51b815260040161088490615547565b82600001516001600160a01b03167fc1bf93444a0055a24a7d0154b75fedf78edfe355c06a2ce8e47f9f39087205598460200151856040015185604051611fd093929190615a37565b60405180604001604052806005815260200164332e342e3560d81b81525081565b6000806128206128d4565b9050600061282c612d87565b90508181111561284157600092505050610840565b61284b82826134b7565b9250505090565b600080612867670de0b6b3a764000085613922565b9050612873818461395c565b949350505050565b3390565b600061288961399e565b606a54909150640100000000900463ffffffff1615806128b85750606a54640100000000900463ffffffff1681105b610d645760405162461bcd60e51b8152600401610884906158a7565b6000610915606c54606d54612d6290919063ffffffff16565b60006128f8836139a2565b8015612909575061290983836139d5565b9392505050565b606080826000015467ffffffffffffffff8111801561292e57600080fd5b50604051908082528060200260200182016040528015612958578160200160208202803683370190505b50600160008181529085016020526040812054919250906001600160a01b03165b6001600160a01b0381161580159061299b57506001600160a01b038116600114155b156129e757808383815181106129ad57fe5b6001600160a01b03928316602091820292909201810191909152918116600090815260018088019093526040902054929091019116612979565b50909392505050565b600080612a14606c54612a0e606d54866134b790919063ffffffff16565b906139fb565b9050612909612a2e606c548361392290919063ffffffff16565b606d5490612d62565b612a49816001600160a01b0316613a2d565b612a655760405162461bcd60e51b8152600401610884906153f4565b606654604051636a3fd4f960e01b81526001600160a01b0390911690636a3fd4f990612a95908490600401614b45565b60206040518083038186803b158015612aad57600080fd5b505afa158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae591906147f7565b612b015760405162461bcd60e51b8152600401610884906155eb565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916060916001600160a01b03851691612b4591614b20565b600060405180830381855afa9150503d8060008114612b80576040519150601f19603f3d011682016040523d82523d6000602084013e612b85565b606091505b509150915081612ba75760405162461bcd60e51b81526004016108849061531d565b612bb2606e846135c2565b6040516001600160a01b038416907fbcd6d991f3416e288bf59a2997b423772937b62c7ea7dd1a54af7771de1f741890600090a2505050565b6001600160a01b038116600114801590612c0d57506001600160a01b03811615155b612c295760405162461bcd60e51b815260040161088490614e74565b6001600160a01b038281166000908152600185016020526040902054811690821614612c675760405162461bcd60e51b815260040161088490614e9d565b6001600160a01b039081166000818152600185016020526040808220805495851683529082208054959094166001600160a01b03199586161790935552805490911690558054600019019055565b6001600160a01b0381166000908152607260205260408120612cd69161447a565b6040516001600160a01b038216907fcd64d9dacd230c5ccf1278ea5332b0621aa28c950fb0e61c8fbc9e2011c88a3490600090a250565b60008111612d2d5760405162461bcd60e51b815260040161088490615474565b60768190556040517fc44c7222e8df09744ced394101df47e78dedb642d3065267bb388901de9df6d490610a7d908390614b3c565b6000828201838110156129095760405162461bcd60e51b815260040161088490614fa7565b607b5490565b600061132b30613a2d565b6000612da26128d4565b612daa612d87565b1015905090565b60008111612dd15760405162461bcd60e51b815260040161088490615070565b606c8190556040517f0d379c1a7282461e725a9dc2d74e65246c77e98ae93835e26c2f1654c48ee4ec90610a7d908390614b3c565b6066546040805163e6d8a94b60e01b815290516000926001600160a01b03169163e6d8a94b91600480830192602092919082900301818787803b158015612e4c57600080fd5b505af1158015612e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e849190614922565b9050612e8f81613a33565b9050606760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612edf57600080fd5b505afa158015612ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f179190614922565b612f4a576040517f3728feb3fc1ef1bf4a24036afbe7d34b59c551bf0d2ab5564e87ec1734fa80dd90600090a150610d64565b60795460765460ff9091169060608167ffffffffffffffff81118015612f6f57600080fd5b50604051908082528060200260200182016040528015612f99578160200160208202803683370190505b50607a54909150859060009081905b8583101561314457606754604051633b30414760e01b81526000916001600160a01b031690633b30414790612fe1908890600401614b3c565b60206040518083038186803b158015612ff957600080fd5b505afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190614573565b6001600160a01b03811660009081526078602052604090205490915060ff1661308c578086858060010196508151811061306757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050613105565b818360010193508310613105577fb5f728fcb182000eb8e953c15f6795f07b6cda75b35ef0b65645b53aac636945846040516130c89190614b3c565b60405180910390a1836130ff576040517f3728feb3fc1ef1bf4a24036afbe7d34b59c551bf0d2ab5564e87ec1734fa80dd90600090a15b50613144565b60008461020902866101f301016040516020016131229190614b3c565b60408051601f1981840301815291905280516020909101209550612fa8915050565b6131618560008151811061315457fe5b6020026020010151613ae0565b6000876131775761317289856139fb565b613181565b61318189886139fb565b905080156131bb5760005b848110156131b9576131b18782815181106131a357fe5b602002602001015183613c50565b60010161318c565b505b60775460ff161561336a5760006131d2606e613cbd565b90505b6001600160a01b0381161580159061320857506131f2606e613cda565b6001600160a01b0316816001600160a01b031614155b15613364576066546040516370a0823160e01b81526000916001600160a01b03808516926370a0823192613240921690600401614b45565b60206040518083038186803b15801561325857600080fd5b505afa15801561326c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132909190614922565b905060008a6132a8576132a382886139fb565b6132b2565b6132b2828b6139fb565b905080156133505760005b8781101561334e576066548a516001600160a01b0390911690632b0ab144908c90849081106132e857fe5b602002602001015186856040518463ffffffff1660e01b815260040161331093929190614bda565b600060405180830381600087803b15801561332a57600080fd5b505af115801561333e573d6000803e3d6000fd5b5050600190920191506132bd9050565b505b61335b606e84613ce0565b925050506131d5565b50613387565b6133878660008151811061337a57fe5b6020026020010151613d03565b50505050505050505050565b80158061341b5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906133c99030908690600401614b59565b60206040518083038186803b1580156133e157600080fd5b505afa1580156133f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134199190614922565b155b6134375760405162461bcd60e51b81526004016108849061580b565b610fbe8363095ea7b360e01b8484604051602401613456929190614c29565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613e4f565b600064010000000082106134b35760405162461bcd60e51b81526004016108849061565d565b5090565b6000828211156134d95760405162461bcd60e51b81526004016108849061514f565b50900390565b6075546000908190815b818160ff161015613569576134fc61445a565b60758260ff168154811061350c57fe5b60009182526020918290206040805160608101825292909101546001600160a01b0381168352600160a01b810461ffff16938301849052600160b01b900460ff1690820152915061355e908590612d62565b9350506001016134e9565b509091505090565b60006001600160a01b03821660011480159061359557506001600160a01b03821615155b80156129095750506001600160a01b03908116600090815260019290920160205260409091205416151590565b6001600160a01b0381166001148015906135e457506001600160a01b03811615155b6136005760405162461bcd60e51b815260040161088490614e74565b6001600160a01b038181166000908152600184016020526040902054161561363a5760405162461bcd60e51b815260040161088490615636565b60016000818152838201602052604080822080546001600160a01b039586168085529284208054969091166001600160a01b03199687161790559183905281549093169092179091558154019055565b6066546040516331a9108f60e11b81526001600160a01b0391821691841690636352211e906136bd908590600401614b3c565b60206040518083038186803b1580156136d557600080fd5b505afa1580156136e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370d9190614573565b6001600160a01b0316146137335760405162461bcd60e51b8152600401610884906159c3565b60005b6001600160a01b0383166000908152607260205260409020548110156137ae576001600160a01b038316600090815260726020526040902080548391908390811061377d57fe5b906000526020600020015414156137a65760405162461bcd60e51b815260040161088490615861565b600101613736565b506001600160a01b0390911660009081526072602090815260408220805460018101825590835291200155565b603c8163ffffffff16116138015760405162461bcd60e51b815260040161088490615930565b606b805463ffffffff191663ffffffff83811691909117918290556040517f4f27f6f220ffad585e728389bc2f0f6b74eeebeb43f95f53752a647cb6e7e68792610a7d921690615ae0565b600054610100900460ff16806138655750613865612d8d565b80613873575060005460ff16155b61388f5760405162461bcd60e51b815260040161088490615360565b600054610100900460ff161580156138ba576000805460ff1961ff0019909116610100171660011790555b6138c2613ede565b6138ca613f5f565b8015610d64576000805461ff001916905550565b8054156138fd5760405162461bcd60e51b815260040161088490615521565b60016000818152918101602052604090912080546001600160a01b0319169091179055565b600082613931575060006107e3565b8282028284828161393e57fe5b04146129095760405162461bcd60e51b8152600401610884906154ab565b600061290983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614039565b4390565b60006139b5826301ffc9a760e01b6139d5565b80156107e357506139ce826001600160e01b03196139d5565b1592915050565b60008060006139e48585614070565b915091508180156139f25750805b95945050505050565b6000808211613a1c5760405162461bcd60e51b815260040161088490615257565b818381613a2557fe5b049392505050565b3b151590565b6075546000908290825b81811015613ad757613a4d61445a565b60758281548110613a5a57fe5b600091825260208083206040805160608101825293909101546001600160a01b0381168452600160a01b810461ffff16928401839052600160b01b900460ff1690830152909250613aac908690614165565b9050613ac18260000151828460400151614179565b613acb87826134b7565b96505050600101613a3d565b50929392505050565b6000613aec6070613cbd565b90505b6001600160a01b03811615801590613b225750613b0c6070613cda565b6001600160a01b0316816001600160a01b031614155b15613c46576066546040516370a0823160e01b81526000916001600160a01b03808516926370a0823192613b5a921690600401614b45565b60206040518083038186803b158015613b7257600080fd5b505afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190614922565b90508015613c33576066546001600160a01b038381166000908152607260205260409081902090516316960d5560e01b815291909216916316960d5591613bf8918791879190600401614b73565b600060405180830381600087803b158015613c1257600080fd5b505af1158015613c26573d6000803e3d6000fd5b50505050613c3382612cb5565b613c3e607083613ce0565b915050613aef565b61101f6070614184565b60665460675460405163358dc31d60e11b81526001600160a01b0392831692636b1b863a92613c8792879287921690600401614c42565b600060405180830381600087803b158015613ca157600080fd5b505af1158015613cb5573d6000803e3d6000fd5b505050505050565b60016000818152910160205260409020546001600160a01b031690565b50600190565b6001600160a01b0380821660009081526001840160205260409020541692915050565b6000613d0f606e613cbd565b90505b6001600160a01b03811615801590613d455750613d2f606e613cda565b6001600160a01b0316816001600160a01b031614155b1561101f576066546040516370a0823160e01b81526000916001600160a01b03808516926370a0823192613d7d921690600401614b45565b60206040518083038186803b158015613d9557600080fd5b505afa158015613da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcd9190614922565b90508015613e3c57606654604051630ac2ac5160e21b81526001600160a01b0390911690632b0ab14490613e0990869086908690600401614bda565b600060405180830381600087803b158015613e2357600080fd5b505af1158015613e37573d6000803e3d6000fd5b505050505b613e47606e83613ce0565b915050613d12565b6060613ea4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142209092919063ffffffff16565b805190915015610fbe5780806020019051810190613ec291906147f7565b610fbe5760405162461bcd60e51b81526004016108849061576e565b600054610100900460ff1680613ef75750613ef7612d8d565b80613f05575060005460ff16155b613f215760405162461bcd60e51b815260040161088490615360565b600054610100900460ff161580156138ca576000805460ff1961ff0019909116610100171660011790558015610d64576000805461ff001916905550565b600054610100900460ff1680613f785750613f78612d8d565b80613f86575060005460ff16155b613fa25760405162461bcd60e51b815260040161088490615360565b600054610100900460ff16158015613fcd576000805460ff1961ff0019909116610100171660011790555b6000613fd761287b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610d64576000805461ff001916905550565b6000818361405a5760405162461bcd60e51b81526004016108849190614db1565b50600083858161406657fe5b0495945050505050565b60008060606301ffc9a760e01b8460405160240161408e9190614d9c565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060866001600160a01b0316617530846040516140e29190614b20565b6000604051808303818686fa925050503d806000811461411e576040519150601f19603f3d011682016040523d82523d6000602084013e614123565b606091505b5091509150602081511015614141576000809450945050505061415e565b818180602001905181019061415691906147f7565b945094505050505b9250929050565b600061290961ffff831684026103e86139fb565b610fbe83838361422f565b6001600081815290820160205260409020546001600160a01b03165b6001600160a01b038116158015906141c257506001600160a01b038116600114155b156141f8576001600160a01b039081166000908152600183016020526040902080546001600160a01b03198116909155166141a0565b50600160008181528282016020526040812080546001600160a01b0319169092179091559055565b60606128738484600085614360565b60665460408051634eb1c24560e11b815290516060926001600160a01b031691639d63848a916004808301926000929190829003018186803b15801561427457600080fd5b505afa158015614288573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142b0919081019061468d565b905080518260ff1611156142d65760405162461bcd60e51b8152600401610884906156da565b6000818360ff16815181106142e757fe5b602090810291909101015160665460405163358dc31d60e11b81529192506001600160a01b031690636b1b863a9061432790889088908690600401614c42565b600060405180830381600087803b15801561434157600080fd5b505af1158015614355573d6000803e3d6000fd5b505050505050505050565b6060824710156143825760405162461bcd60e51b8152600401610884906151cf565b61438b85613a2d565b6143a75760405162461bcd60e51b8152600401610884906156a3565b60006060866001600160a01b031685876040516143c49190614b20565b60006040518083038185875af1925050503d8060008114614401576040519150601f19603f3d011682016040523d82523d6000602084013e614406565b606091505b5091509150614416828286614421565b979650505050505050565b60608315614430575081612909565b8251156144405782518084602001fd5b8160405162461bcd60e51b81526004016108849190614db1565b604080516060810182526000808252602082018190529181019190915290565b5080546000825590600052602060002090810190610d6491905b808211156134b35760008155600101614494565b60008083601f8401126144b9578081fd5b50813567ffffffffffffffff8111156144d0578182fd5b602083019150836020808302850101111561415e57600080fd5b6000606082840312156144fb578081fd5b6145056060615af1565b9050813561451281615b64565b8152602082013561ffff8116811461452957600080fd5b602082015261453b8360408401614546565b604082015292915050565b803560ff811681146107e357600080fd5b600060208284031215614568578081fd5b813561290981615b64565b600060208284031215614584578081fd5b815161290981615b64565b600080600080608085870312156145a4578283fd5b84356145af81615b64565b935060208501356145bf81615b64565b92506040850135915060608501356145d681615b64565b939692955090935050565b600080604083850312156145f3578081fd5b82356145fe81615b64565b9150602083013561460e81615b79565b809150509250929050565b6000806040838503121561462b578182fd5b825161463681615b64565b6020939093015192949293505050565b6000806000806080858703121561465b578182fd5b843561466681615b64565b935060208501359250604085013561467d81615b64565b915060608501356145d681615b64565b6000602080838503121561469f578182fd5b825167ffffffffffffffff8111156146b5578283fd5b8301601f810185136146c5578283fd5b80516146d86146d382615b18565b615af1565b81815283810190838501858402850186018910156146f4578687fd5b8694505b8385101561471f57805161470b81615b64565b8352600194909401939185019185016146f8565b50979650505050505050565b6000806020838503121561473d578182fd5b823567ffffffffffffffff811115614753578283fd5b61475f858286016144a8565b90969095509350505050565b6000806020838503121561477d578182fd5b823567ffffffffffffffff80821115614794578384fd5b818501915085601f8301126147a7578384fd5b8135818111156147b5578485fd5b8660206060830285010111156147c9578485fd5b60209290920196919550909350505050565b6000602082840312156147ec578081fd5b813561290981615b79565b600060208284031215614808578081fd5b815161290981615b79565b600060208284031215614824578081fd5b81356001600160e01b031981168114612909578182fd5b6000806040838503121561484d578182fd5b823561485881615b64565b9150602083013561460e81615b64565b60008060006040848603121561487c578081fd5b833561488781615b64565b9250602084013567ffffffffffffffff8111156148a2578182fd5b6148ae868287016144a8565b9497909650939450505050565b6000606082840312156148cc578081fd5b61290983836144ea565b600080608083850312156148e8578182fd5b6148f284846144ea565b91506149018460608501614546565b90509250929050565b60006020828403121561491b578081fd5b5035919050565b600060208284031215614933578081fd5b5051919050565b600080600080600080600060e0888a031215614954578485fd5b873596506020808901359650604089013561496e81615b64565b9550606089013561497e81615b64565b9450608089013561498e81615b64565b935060a089013561499e81615b64565b925060c089013567ffffffffffffffff8111156149b9578283fd5b8901601f81018b136149c9578283fd5b80356149d76146d382615b18565b81815283810190838501858402850186018f10156149f3578687fd5b8694505b83851015614a1e578035614a0a81615b64565b8352600194909401939185019185016149f7565b50809550505050505092959891949750929550565b600080600080600080600060e0888a031215614a4d578081fd5b87359650602088013595506040880135614a6681615b64565b94506060880135614a7681615b64565b93506080880135614a8681615b64565b925060a0880135614a9681615b64565b8092505060c0880135905092959891949750929550565b600060208284031215614abe578081fd5b813561290981615b87565b60008060408385031215614adb578182fd5b8251614ae681615b87565b602084015190925061460e81615b87565b80516001600160a01b0316825260208082015161ffff169083015260409081015160ff16910152565b60008251614b32818460208701615b38565b9190910192915050565b90815260200190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03848116825283166020808301919091526060604083018190528354908301819052600084815282812090929091608085019190845b81811015614bcc57845484526001948501949383019301614bb0565b509198975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529083166040830152909116606082015260800190565b6020808252825182820181905260009190848201906040850190845b81811015614cd15783516001600160a01b031683529284019291840191600101614cac565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614cd157614d0c838551614af7565b9284019260609290920191600101614cf9565b6020808252810182905260006001600160fb1b03831115614d3e578081fd5b60208302808560408501379190910160400190815292915050565b6020808252825182820181905260009190848201906040850190845b81811015614cd157835183529284019291840191600101614d75565b901515815260200190565b6001600160e01b031991909116815260200190565b6000602082528251806020840152614dd0816040850160208701615b38565b601f01601f19169190910160400192915050565b60208082526024908201527f506572696f6469635072697a6553747261746567792f6572633732312d696e76604082015263185b1a5960e21b606082015260800190565b6020808252602c908201527f506572696f6469635072697a6553747261746567792f746f6b656e2d6c69737460408201526b195b995c8b5a5b9d985b1a5960a21b606082015260800190565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b602080825260139082015272496e76616c696420707265764164647265737360681b604082015260600190565b6020808252602b908201527f506572696f6469635072697a6553747261746567792f7072697a652d7065726960408201526a37b216b737ba16b7bb32b960a91b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252602c908201527f506572696f6469635072697a6553747261746567792f6f6e6c792d6f776e657260408201526b16b7b916b634b9ba32b732b960a11b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602a908201527f506572696f6469635072697a6553747261746567792f73706f6e736f72736869604082015269702d6e6f742d7a65726f60b01b606082015260800190565b60208082526028908201527f4d756c7469706c6557696e6e6572732f696e76616c69642d7072697a6573706c60408201526734ba16ba37b5b2b760c11b606082015260800190565b60208082526034908201527f506572696f6469635072697a6553747261746567792f7072697a652d706572696040820152736f642d677265617465722d7468616e2d7a65726f60601b606082015260800190565b60208082526025908201527f506572696f6469635072697a6553747261746567792f6f6e6c792d7072697a656040820152640b5c1bdbdb60da1b606082015260800190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f7472616e736665722d746040820152653796b9b2b63360d11b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526029908201527f506572696f6469635072697a6553747261746567792f7072697a652d706f6f6c6040820152682d6e6f742d7a65726f60b81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526022908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d7a65604082015261726f60f01b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d636f6040820152656d706c65746560d01b606082015260800190565b60208082526029908201527f4d756c7469706c6557696e6e6572732f696e76616c69642d7072697a6573706c6040820152681a5d0b5d185c99d95d60ba1b606082015260800190565b60208082526023908201527f506572696f6469635072697a6553747261746567792f65726332302d696e76616040820152621b1a5960ea1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526026908201527f4d756c7469706c6557696e6e6572732f6e6f6e6578697374656e742d7072697a604082015265195cdc1b1a5d60d21b606082015260800190565b6020808252818101527f506572696f6469635072697a6553747261746567792f65726332302d6e756c6c604082015260600190565b6020808252602b908201527f506572696f6469635072697a6553747261746567792f726e672d616c7265616460408201526a1e4b5c995c5d595cdd195960aa1b606082015260800190565b6020808252601f908201527f4d756c7469706c6557696e6e6572732f77696e6e6572732d6774652d6f6e6500604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b105b1c9958591e481a5b9a5d60a21b604082015260600190565b60208082526033908201527f4d756c7469706c6557696e6e6572732f696e76616c69642d7072697a6573706c6040820152721a5d0b5c195c98d95b9d1859d94b5d1bdd185b606a1b606082015260800190565b60208082526031908201527f506572696f6469635072697a6553747261746567792f6265666f72654177617260408201527019131a5cdd195b995c8b5a5b9d985b1a59607a1b606082015260800190565b6020808252602b908201527f506572696f6469635072697a6553747261746567792f63616e6e6f742d61776160408201526a1c990b595e1d195c9b985b60aa1b606082015260800190565b6020808252600d908201526c105b1c9958591e481859191959609a1b604082015260600190565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602f908201527f506572696f6469635072697a6553747261746567792f61776172642d696e766160408201526e0d8d2c85ae8ded6cadc5ad2dcc8caf608b1b606082015260800190565b60208082526025908201527f506572696f6469635072697a6553747261746567792f7469636b65742d6e6f746040820152642d7a65726f60d81b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526033908201527f506572696f6469635072697a6553747261746567792f7072697a6553747261746040820152721959de531a5cdd195b995c8b5a5b9d985b1a59606a1b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f6572633732312d6475706040820152656c696361746560d01b606082015260800190565b60208082526023908201527f506572696f6469635072697a6553747261746567792f726e672d696e2d666c6960408201526219da1d60ea1b606082015260800190565b60208082526026908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d74696040820152651b59591bdd5d60d21b606082015260800190565b6020808252602c908201527f506572696f6469635072697a6553747261746567792f726e672d74696d656f7560408201526b742d67742d36302d7365637360a01b606082015260800190565b60208082526027908201527f506572696f6469635072697a6553747261746567792f726e672d6e6f742d72656040820152661c5d595cdd195960ca1b606082015260800190565b60208082526027908201527f506572696f6469635072697a6553747261746567792f756e617661696c61626c6040820152663296ba37b5b2b760c91b606082015260800190565b606081016107e38284614af7565b61ffff93909316835260ff919091166020830152604082015260600190565b61ffff93909316835260ff918216602084015216604082015260600190565b918252602082015260400190565b86815260208082018790526001600160a01b0386811660408401528581166060840152848116608084015260c060a08401819052845190840181905260009285810192909160e0860190855b81811015615ace578551841683529484019491840191600101615ab0565b50909c9b505050505050505050505050565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615b1057600080fd5b604052919050565b600067ffffffffffffffff821115615b2e578081fd5b5060209081020190565b60005b83811015615b53578181015183820152602001615b3b565b83811115610cc45750506000910152565b6001600160a01b0381168114610d6457600080fd5b8015158114610d6457600080fd5b63ffffffff81168114610d6457600080fdfea26469706673582212200b04a034fdc9b603434ff2e14bbf9df827851a7ec270ad4d35335f3752edeb5f64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
