{
  "_format": "hh-sol-artifact-1",
  "contractName": "CompoundPrizePool",
  "sourceName": "contracts/prize-pool/compound/CompoundPrizePool.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "AwardCaptured",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "winner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Awarded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "winner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "AwardedExternalERC20",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "winner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "AwardedExternalERC721",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        }
      ],
      "name": "CompoundPrizePoolInitialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ControlledTokenInterface",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "ControlledTokenAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CreditBurned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CreditMinted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "creditLimitMantissa",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "creditRateMantissa",
          "type": "uint128"
        }
      ],
      "name": "CreditPlanSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "referrer",
          "type": "address"
        }
      ],
      "name": "Deposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "error",
          "type": "bytes"
        }
      ],
      "name": "ErrorAwardingExternalERC721",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "reserveRegistry",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxExitFeeMantissa",
          "type": "uint256"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemed",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "exitFee",
          "type": "uint256"
        }
      ],
      "name": "InstantWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidityCap",
          "type": "uint256"
        }
      ],
      "name": "LiquidityCapSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "prizeStrategy",
          "type": "address"
        }
      ],
      "name": "PrizeStrategySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ReserveFeeCaptured",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ReserveWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TransferredExternalERC20",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accountedBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        }
      ],
      "name": "award",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "awardBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "externalToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "awardExternalERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "externalToken",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "awardExternalERC721",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "balance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        }
      ],
      "name": "balanceOfCredit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "beforeTokenTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cToken",
      "outputs": [
        {
          "internalType": "contract CTokenInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "calculateEarlyExitFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "exitFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "burnedCredit",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "calculateReserveFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_externalToken",
          "type": "address"
        }
      ],
      "name": "canAwardExternal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "captureAwardBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ICompLike",
          "name": "compLike",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "compLikeDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        }
      ],
      "name": "creditPlanOf",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "creditLimitMantissa",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "creditRateMantissa",
          "type": "uint128"
        }
      ],
      "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": "depositTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_controlledToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_principal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_interest",
          "type": "uint256"
        }
      ],
      "name": "estimateCreditAccrualTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "durationSeconds",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract RegistryInterface",
          "name": "_reserveRegistry",
          "type": "address"
        },
        {
          "internalType": "contract ControlledTokenInterface[]",
          "name": "_controlledTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_maxExitFeeMantissa",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract RegistryInterface",
          "name": "_reserveRegistry",
          "type": "address"
        },
        {
          "internalType": "contract ControlledTokenInterface[]",
          "name": "_controlledTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_maxExitFeeMantissa",
          "type": "uint256"
        },
        {
          "internalType": "contract CTokenInterface",
          "name": "_cToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ControlledTokenInterface",
          "name": "controlledToken",
          "type": "address"
        }
      ],
      "name": "isControlled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidityCap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxExitFeeMantissa",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prizeStrategy",
      "outputs": [
        {
          "internalType": "contract TokenListenerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reserveRegistry",
      "outputs": [
        {
          "internalType": "contract RegistryInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reserveTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_controlledToken",
          "type": "address"
        },
        {
          "internalType": "uint128",
          "name": "_creditRateMantissa",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "_creditLimitMantissa",
          "type": "uint128"
        }
      ],
      "name": "setCreditPlanOf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_liquidityCap",
          "type": "uint256"
        }
      ],
      "name": "setLiquidityCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract TokenListenerInterface",
          "name": "_prizeStrategy",
          "type": "address"
        }
      ],
      "name": "setPrizeStrategy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokens",
      "outputs": [
        {
          "internalType": "contract ControlledTokenInterface[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "externalToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferExternalERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "controlledToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maximumExitFee",
          "type": "uint256"
        }
      ],
      "name": "withdrawInstantlyFrom",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawReserve",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50614425806100206000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c8063888c2b6f11610130578063a7b2cc31116100b8578063e6d8a94b1161007c578063e6d8a94b14610956578063edb4e1cf1461095e578063f2fde38b14610966578063fc0c546a1461098c578063ffa1ad741461099457610232565b8063a7b2cc31146107c1578063b69ef8a8146107fe578063c587148514610806578063d4a1361d146108c5578063e323f8251461091a57610232565b806398bf3eb6116100ff57806398bf3eb6146107025780639d63848a1461070a5780639e167519146107625780639fe32a911461076a578063a016240b1461078757610232565b8063888c2b6f1461067d5780638da5cb5b146106cc5780638e71c1f6146106d457806391ca480e146106dc57610232565b8063630665b4116101be57806376687d3d1161018257806376687d3d146105ca57806378b3d327146105d257806379cb8563146105f85780637b99adb11461062a5780637cbab1c71461064757610232565b8063630665b41461052657806369e527da1461052e5780636a3fd4f9146105525780636b1b863a1461058c578063715018a6146105c257610232565b80632b0ab144116102055780632b0ab144146103bb5780632f7627e3146103f15780633ede50c61461041f578063494de9f7146104d257806352a387ab1461050057610232565b80630937eb541461023757806313f55e3914610251578063150b7a021461028957806316960d5514610334575b600080fd5b61023f610a11565b60408051918252519081900360200190f35b6102876004803603606081101561026757600080fd5b506001600160a01b03813581169160208101359091169060400135610a20565b005b6103176004803603608081101561029f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156102d957600080fd5b8201836020820111156102eb57600080fd5b803590602001918460018302840111600160201b8311171561030c57600080fd5b509092509050610ade565b604080516001600160e01b03199092168252519081900360200190f35b6102876004803603606081101561034a57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561037d57600080fd5b82018360208201111561038f57600080fd5b803590602001918460208302840111600160201b831117156103b057600080fd5b509092509050610aef565b610287600480360360608110156103d157600080fd5b506001600160a01b03813581169160208101359091169060400135610d9c565b6102876004803603604081101561040757600080fd5b506001600160a01b0381358116916020013516610e59565b6102876004803603606081101561043557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561045f57600080fd5b82018360208201111561047157600080fd5b803590602001918460208302840111600160201b8311171561049257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610fa8915050565b61023f600480360360408110156104e857600080fd5b506001600160a01b038135811691602001351661119a565b61023f6004803603602081101561051657600080fd5b50356001600160a01b03166112a1565b61023f6113f0565b6105366113f6565b604080516001600160a01b039092168252519081900360200190f35b6105786004803603602081101561056857600080fd5b50356001600160a01b0316611405565b604080519115158252519081900360200190f35b610287600480360360608110156105a257600080fd5b506001600160a01b03813581169160208101359160409091013516611418565b610287611620565b61023f6116cc565b610578600480360360208110156105e857600080fd5b50356001600160a01b03166116d2565b61023f6004803603606081101561060e57600080fd5b506001600160a01b0381351690602081013590604001356116dd565b6102876004803603602081101561064057600080fd5b50356116f2565b6102876004803603606081101561065d57600080fd5b506001600160a01b03813581169160208101359091169060400135611760565b6106b36004803603606081101561069357600080fd5b506001600160a01b038135811691602081013590911690604001356119ac565b6040805192835260208301919091528051918290030190f35b6105366119c6565b6105366119d5565b610287600480360360208110156106f257600080fd5b50356001600160a01b03166119e4565b610536611a4f565b610712611a5e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561074e578181015183820152602001610736565b505050509050019250505060405180910390f35b61023f611ac0565b61023f6004803603602081101561078057600080fd5b5035611ac6565b61023f6004803603608081101561079d57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135611bf4565b610287600480360360608110156107d757600080fd5b506001600160a01b03813516906001600160801b0360208201358116916040013516611e2b565b61023f611f81565b6102876004803603608081101561081c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561084657600080fd5b82018360208201111561085857600080fd5b803590602001918460208302840111600160201b8311171561087957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602001356001600160a01b0316611f8b565b6108eb600480360360208110156108db57600080fd5b50356001600160a01b0316612089565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102876004803603608081101561093057600080fd5b506001600160a01b038135811691602081013591604082013581169160600135166120b9565b61023f61226e565b61023f6123e4565b6102876004803603602081101561097c57600080fd5b50356001600160a01b03166123ea565b6105366124ed565b61099c6124f7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109d65781810151838201526020016109be565b50505050905090810190601f168015610a035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610a1b612518565b905090565b6099546001600160a01b0316610a34612623565b6001600160a01b031614610a7d576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b610a88838383612627565b15610ad957816001600160a01b0316836001600160a01b03167fb0bac59718cd343c80a813518afcf36846cfcfe6d56e2b3cab9bd49f5f9b251c836040518082815260200191505060405180910390a35b505050565b630a85bd0160e11b95945050505050565b6099546001600160a01b0316610b03612623565b6001600160a01b031614610b4c576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b610b55836126af565b610ba6576040805162461bcd60e51b815260206004820181905260248201527f5072697a65506f6f6c2f696e76616c69642d65787465726e616c2d746f6b656e604482015290519081900360640190fd5b80610bb057610d96565b60005b81811015610d1d57836001600160a01b03166342842e0e3087868686818110610bd857fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610c3557600080fd5b505af1925050508015610c46575060015b610d15573d808015610c74576040519150601f19603f3d011682016040523d82523d6000602084013e610c79565b606091505b507f17e975018310f88872b58d4d8263adca83cf5c1893496ea2a86923dab15276ad816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cd9578181015183820152602001610cc1565b50505050905090810190601f168015610d065780820380516001836020036101000a031916815260200191505b509250505060405180910390a1505b600101610bb3565b50826001600160a01b0316846001600160a01b03167f69c2de32bc4d47f488e72626a6cfdee85089342e52675e7de79c4b417623960c848460405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a35b50505050565b6099546001600160a01b0316610db0612623565b6001600160a01b031614610df9576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b610e04838383612627565b15610ad957816001600160a01b0316836001600160a01b03167fc65f48aca3b7a99b7443d04b8ffbb073156179bc628dc3f7def5047748973469836040518082815260200191505060405180910390a3505050565b610e61612623565b6001600160a01b0316610e726119c6565b6001600160a01b031614610ebb576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f0a57600080fd5b505afa158015610f1e573d6000803e3d6000fd5b505050506040513d6020811015610f3457600080fd5b50511115610fa457816001600160a01b0316635c19a95c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050505b5050565b600054610100900460ff1680610fc15750610fc16126c4565b80610fcf575060005460ff16155b61100a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015611035576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03841661107a5760405162461bcd60e51b815260040180806020018281038252602281526020018061424c6022913960400191505060405180910390fd5b82518067ffffffffffffffff8111801561109357600080fd5b506040519080825280602002602001820160405280156110bd578160200160208202803683370190505b5080516110d291609891602090910190614183565b5060005b818110156111095760008582815181106110ec57fe5b6020026020010151905061110081836126d5565b506001016110d6565b50611112612800565b61111a6128b1565b611125600019612946565b609780546001600160a01b0319166001600160a01b038716908117909155609a849055604080519182526020820185905280517f25ff68dd81b34665b5ba7e553ee5511bf6812e12adb4a7e2c0d9e26b3099ce799281900390910190a1508015610d96576000805461ff001916905550505050565b6000816111a681612981565b6111e5576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b61126a8484856001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d602081101561126157600080fd5b50516000612a3d565b50506001600160a01b039081166000908152609f60209081526040808320949093168252929092529020546001600160c01b031690565b600080609760009054906101000a90046001600160a01b03166001600160a01b031663f5e3542b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b505190506001600160a01b0381163314611376576040805162461bcd60e51b81526020600482015260166024820152755072697a65506f6f6c2f6f6e6c792d7265736572766560501b604482015290519081900360640190fd5b609b80546000918290559061138a82612a53565b90506113a98582611399612c38565b6001600160a01b03169190612cae565b6040805183815290516001600160a01b038716917f1c71c8e11fd443227c8f8d3dc1a237a3a5e8310b540c7fbcf5169754aedf42c9919081900360200190a2949350505050565b609d5490565b60a0546001600160a01b031681565b6000611410826126af565b90505b919050565b6099546001600160a01b031661142c612623565b6001600160a01b031614611475576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b8061147f81612981565b6114be576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b826114c857610d96565b609d5483111561151f576040805162461bcd60e51b815260206004820152601d60248201527f5072697a65506f6f6c2f61776172642d657863656564732d617661696c000000604482015290519081900360640190fd5b609d5461152c9084612d00565b609d5561153c8484846000612d62565b60006115488385612e48565b90506115ce8584856001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561159c57600080fd5b505afa1580156115b0573d6000803e3d6000fd5b505050506040513d60208110156115c657600080fd5b505184612a3d565b826001600160a01b0316856001600160a01b03167fe2554529d99ab7a67db6b4cea2b32c7d55ae325f958861e05f304fdded867e31866040518082815260200191505060405180910390a35050505050565b611628612623565b6001600160a01b03166116396119c6565b6001600160a01b031614611682576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b609c5481565b600061141082612981565b60006116ea848484612e80565b949350505050565b6116fa612623565b6001600160a01b031661170b6119c6565b6001600160a01b031614611754576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b61175d81612946565b50565b3361176a81612981565b6117a9576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b6001600160a01b03841615611883576000336001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561180757600080fd5b505afa15801561181b573d6000803e3d6000fd5b505050506040513d602081101561183157600080fd5b50519050600061184386338484612ed1565b9050846001600160a01b0316866001600160a01b031614611875576118723361186c8487612d00565b83612f60565b90505b611880863383612fa6565b50505b6001600160a01b038316158015906118ad5750836001600160a01b0316836001600160a01b031614155b15611904576119048333336001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561123757600080fd5b6001600160a01b0384161580159061192657506099546001600160a01b031615155b15610d96576099546040805163b221095760e01b81526001600160a01b0387811660048301528681166024830152604482018690523360648301529151919092169163b221095791608480830192600092919082900301818387803b15801561198e57600080fd5b505af11580156119a2573d6000803e3d6000fd5b5050505050505050565b6000806119ba858585613144565b90969095509350505050565b6033546001600160a01b031690565b6097546001600160a01b031681565b6119ec612623565b6001600160a01b03166119fd6119c6565b6001600160a01b031614611a46576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b61175d816132e2565b6099546001600160a01b031681565b60606098805480602002602001604051908101604052809291908181526020018280548015611ab657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a98575b5050505050905090565b609a5481565b600080609760009054906101000a90046001600160a01b03166001600160a01b031663f5e3542b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1757600080fd5b505afa158015611b2b573d6000803e3d6000fd5b505050506040513d6020811015611b4157600080fd5b505190506001600160a01b038116611b5d576000915050611413565b6000816001600160a01b031663010dfa58306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611bac57600080fd5b505afa158015611bc0573d6000803e3d6000fd5b505050506040513d6020811015611bd657600080fd5b5051905080611bea57600092505050611413565b6116ea84826133f5565b600060026065541415611c4e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260655582611c5d81612981565b611c9c576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b600080611caa888789613144565b9150915084821115611ced5760405162461bcd60e51b81526004018080602001828103825260278152602001806143036027913960400191505060405180910390fd5b611cf8888783613416565b856001600160a01b031663631b5dfb611d0f612623565b8a8a6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611d6757600080fd5b505af1158015611d7b573d6000803e3d6000fd5b505050506000611d948389612d0090919063ffffffff16565b90506000611da182612a53565b9050611db08a82611399612c38565b876001600160a01b03168a6001600160a01b0316611dcc612623565b604080518d81526020810186905280820189905290516001600160a01b0392909216917f0271704a58fd2953e49b87d67a0a3ce28a58147de98a5457f60b4686f63850309181900360600190a450506001606555509695505050505050565b82611e3581612981565b611e74576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b611e7c612623565b6001600160a01b0316611e8d6119c6565b6001600160a01b031614611ed6576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6040805180820182526001600160801b0380851680835286821660208085018281526001600160a01b038b166000818152609e84528890209651875492518716600160801b029087166fffffffffffffffffffffffffffffffff1990931692909217909516179094558451928352928201528083019190915290517ffb0ba2cf86a2b03bcf387753a2192da80a006afa99dd022bb301c78e323bf1b99181900360600190a150505050565b6000610a1b6134d7565b600054610100900460ff1680611fa45750611fa46126c4565b80611fb2575060005460ff16155b611fed5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015612018576000805460ff1961ff0019909116610100171660011790555b612023858585610fa8565b60a080546001600160a01b0319166001600160a01b0384811691909117918290556040519116907fa5670b49a0ee863080ae28858bb5d9bcc1eb0d2a6f4c9c3a8accc43b8f445d2590600090a28015612082576000805461ff00191690555b5050505050565b6001600160a01b03166000908152609e60205260409020546001600160801b0380821692600160801b9092041690565b60026065541415612111576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026065558161212081612981565b61215f576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b8361216981613537565b6121ba576040805162461bcd60e51b815260206004820152601f60248201527f5072697a65506f6f6c2f657863656564732d6c69717569646974792d63617000604482015290519081900360640190fd5b60006121c4612623565b90506121d287878787612d62565b6121f18130886121e0612c38565b6001600160a01b031692919061355b565b6121fa866135b5565b846001600160a01b0316876001600160a01b0316826001600160a01b03167f6ce569498e0f86f147466ac49211cb2a1ffe06195adb805e383b3f2365109160898860405180838152602001826001600160a01b031681526020019250505060405180910390a4505060016065555050505050565b6000600260655414156122c8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260655560006122d7612518565b905060006122e36134d7565b905060008282116122f55760006122ff565b6122ff8284612d00565b90506000609d548211612313576000612321565b609d54612321908390612d00565b905080156123d357600061233482611ac6565b9050801561238e57609b5461234990826136aa565b609b556123568282612d00565b6040805183815290519193507f5f1703ccfa2730d4245350f228079926a37f26a44ecf6978a7eeafff0af11407919081900360200190a15b609d5461239b90836136aa565b609d556040805183815290517fce2b6e507c7ca1a20ce136810f524eefc19ba4c7e4866eb6cc0cba76e778d4be9181900360200190a1505b609d54945050505050600160655590565b609b5481565b6123f2612623565b6001600160a01b03166124036119c6565b6001600160a01b03161461244c576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6001600160a01b0381166124915760405162461bcd60e51b81526004018080602001828103825260268152602001806141ff6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a1b612c38565b60405180604001604052806005815260200164332e342e3560d81b81525081565b600080609b5490506060609880548060200260200160405190810160405280929190818152602001828054801561257857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161255a575b505083519394506000925050505b8181101561261a5761261083828151811061259d57fe5b60200260200101516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125dd57600080fd5b505afa1580156125f1573d6000803e3d6000fd5b505050506040513d602081101561260757600080fd5b505185906136aa565b9350600101612586565b50919250505090565b3390565b6000612632836126af565b612683576040805162461bcd60e51b815260206004820181905260248201527f5072697a65506f6f6c2f696e76616c69642d65787465726e616c2d746f6b656e604482015290519081900360640190fd5b81612690575060006126a8565b6126a46001600160a01b0384168584612cae565b5060015b9392505050565b60a0546001600160a01b039081169116141590565b60006126cf30613704565b15905090565b306001600160a01b0316826001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b15801561271857600080fd5b505afa15801561272c573d6000803e3d6000fd5b505050506040513d602081101561274257600080fd5b50516001600160a01b03161461279f576040805162461bcd60e51b815260206004820152601e60248201527f5072697a65506f6f6c2f746f6b656e2d6374726c722d6d69736d617463680000604482015290519081900360640190fd5b81609882815481106127ad57fe5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051918416917f460e712b4a5d801d031ed673dea209b73ab854f7ddeb86b6c48082e92c3eee669190a25050565b600054610100900460ff168061281957506128196126c4565b80612827575060005460ff16155b6128625760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff1615801561288d576000805460ff1961ff0019909116610100171660011790555b61289561370a565b61289d6137aa565b801561175d576000805461ff001916905550565b600054610100900460ff16806128ca57506128ca6126c4565b806128d8575060005460ff16155b6129135760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff1615801561293e576000805460ff1961ff0019909116610100171660011790555b61289d6138a3565b609c8190556040805182815290517f3ff20538222f568f27ff436c0c49dfd3e48d5b8f86533a3f759dc1c7089775ab9181900360200190a150565b6000606060988054806020026020016040519081016040528092919081815260200182805480156129db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116129bd575b505083519394506000925050505b81811015612a3257846001600160a01b0316838281518110612a0757fe5b60200260200101516001600160a01b03161415612a2a5760019350505050611413565b6001016129e9565b506000949350505050565b610d968484612a4e87878787612ed1565b612fa6565b600080612a5e612c38565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612aaf57600080fd5b505afa158015612ac3573d6000803e3d6000fd5b505050506040513d6020811015612ad957600080fd5b505160a0546040805163852a12e360e01b81526004810188905290519293506001600160a01b039091169163852a12e3916024808201926020929091908290030181600087803b158015612b2c57600080fd5b505af1158015612b40573d6000803e3d6000fd5b505050506040513d6020811015612b5657600080fd5b505115612baa576040805162461bcd60e51b815260206004820152601f60248201527f436f6d706f756e645072697a65506f6f6c2f72656465656d2d6661696c656400604482015290519081900360640190fd5b6000612c2f82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612bfd57600080fd5b505afa158015612c11573d6000803e3d6000fd5b505050506040513d6020811015612c2757600080fd5b505190612d00565b95945050505050565b60a05460408051636f307dc360e01b815290516000926001600160a01b031691636f307dc3916004808301926020929190829003018186803b158015612c7d57600080fd5b505afa158015612c91573d6000803e3d6000fd5b505050506040513d6020811015612ca757600080fd5b5051905090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ad9908490613949565b600082821115612d57576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b6099546001600160a01b031615612df157609954604080516304d7f3db60e41b81526001600160a01b038781166004830152602482018790528581166044830152848116606483015291519190921691634d7f3db091608480830192600092919082900301818387803b158015612dd857600080fd5b505af1158015612dec573d6000803e3d6000fd5b505050505b816001600160a01b0316635d7b075885856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561198e57600080fd5b6001600160a01b0382166000908152609e60205260408120546126a8908390612e7b9082906001600160801b03166133f5565b6139fa565b6001600160a01b0383166000908152609e60205260408120548190612eb6908590600160801b90046001600160801b03166133f5565b905080612ec75760009150506126a8565b612c2f8382613a1f565b6001600160a01b038381166000908152609f6020908152604080832093881683529290529081208054829190600160e01b900460ff16612f145760009150612f56565b6000612f21888888613a86565b8254909150612f529088908890612f4d908990612f47906001600160c01b0316876136aa565b906136aa565b612f60565b9250505b5095945050505050565b6001600160a01b0383166000908152609e60205260408120548190612f8f9085906001600160801b03166133f5565b905080831115612f9d578092505b50909392505050565b6001600160a01b038083166000908152609f602090815260408083209387168352929052819020548151606081019092526001600160c01b03169080612feb84613b37565b6001600160801b03168152602001613009613004613b7f565b613b83565b63ffffffff908116825260016020928301526001600160a01b038681166000908152609f84526040808220928a168252918452819020845181549486015195909201516001600160c01b03199094166001600160c01b039092169190911763ffffffff60c01b1916600160c01b94909216939093021760ff60e01b1916600160e01b91151591909102179055818110156130ec576001600160a01b038084169085167f2f92d56910619b38bc29fd8e4ca5e56359edac7a0c086cdcd305fb603fa374916130d68585612d00565b60408051918252519081900360200190a3610d96565b80821015610d96576001600160a01b038084169085167ff584c579437bc25785b953cc4d8d247251812751e1871c6130cbdecf95a106cf61312d8486612d00565b60408051918252519081900360200190a350505050565b6000806000846001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561319657600080fd5b505afa1580156131aa573d6000803e3d6000fd5b505050506040513d60208110156131c057600080fd5b5051905083811015613212576040805162461bcd60e51b81526020600482015260166024820152755072697a65506f6f6c2f696e737566662d66756e647360501b604482015290519081900360640190fd5b61321f8686836000612a3d565b60006132348661322f8488612d00565b612e48565b6001600160a01b038088166000908152609f60209081526040808320938c16835292905290812054919250906001600160c01b031682116132ab576001600160a01b038088166000908152609f60209081526040808320938c16835292905220546132a8906001600160c01b031683612d00565b90505b60006132b78888612e48565b90508082116132c657816132c8565b805b94506132d48186612d00565b955050505050935093915050565b6001600160a01b03811661333d576040805162461bcd60e51b815260206004820181905260248201527f5072697a65506f6f6c2f7072697a6553747261746567792d6e6f742d7a65726f604482015290519081900360640190fd5b61335a6001600160a01b038216600162a1cb1960e01b0319613bc7565b6133ab576040805162461bcd60e51b815260206004820152601f60248201527f5072697a65506f6f6c2f7072697a6553747261746567792d696e76616c696400604482015290519081900360640190fd5b609980546001600160a01b0319166001600160a01b0383169081179091556040517f7f58dc86bc2e435cb77ca0edb1df55e25f90caf2d6bd866971715437d456a21290600090a250565b6000806134028385613be3565b90506116ea81670de0b6b3a7640000613c3c565b6001600160a01b038083166000908152609f602090815260408083209387168352929052205461345890613453906001600160c01b031683612d00565b613b37565b6001600160a01b038084166000818152609f602090815260408083209489168084529482529182902080546001600160c01b0319166001600160801b0396909616959095179094558051858152905191937ff584c579437bc25785b953cc4d8d247251812751e1871c6130cbdecf95a106cf92918290030190a3505050565b60a05460408051633af9e66960e01b815230600482015290516000926001600160a01b031691633af9e66991602480830192602092919082900301818787803b15801561352357600080fd5b505af1158015612c91573d6000803e3d6000fd5b600080613542612518565b609c5490915061355282856136aa565b11159392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610d96908590613949565b60a0546135de906001600160a01b0316826135ce612c38565b6001600160a01b03169190613c7e565b60a0546040805163140e25ad60e31b81526004810184905290516001600160a01b039092169163a0712d68916024808201926020929091908290030181600087803b15801561362c57600080fd5b505af1158015613640573d6000803e3d6000fd5b505050506040513d602081101561365657600080fd5b50511561175d576040805162461bcd60e51b815260206004820152601d60248201527f436f6d706f756e645072697a65506f6f6c2f6d696e742d6661696c6564000000604482015290519081900360640190fd5b6000828201838110156126a8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3b151590565b600054610100900460ff168061372357506137236126c4565b80613731575060005460ff16155b61376c5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff1615801561289d576000805460ff1961ff001990911661010017166001179055801561175d576000805461ff001916905550565b600054610100900460ff16806137c357506137c36126c4565b806137d1575060005460ff16155b61380c5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015613837576000805460ff1961ff0019909116610100171660011790555b6000613841612623565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561175d576000805461ff001916905550565b600054610100900460ff16806138bc57506138bc6126c4565b806138ca575060005460ff16155b6139055760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015613930576000805460ff1961ff0019909116610100171660011790555b6001606555801561175d576000805461ff001916905550565b606061399e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d919092919063ffffffff16565b805190915015610ad9578080602001905160208110156139bd57600080fd5b5051610ad95760405162461bcd60e51b815260040180806020018281038252602a815260200180614370602a913960400191505060405180910390fd5b600080613a0984609a546133f5565b905080831115613a17578092505b509092915050565b6000808211613a75576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381613a7e57fe5b049392505050565b6001600160a01b038281166000908152609f60209081526040808320938716835292905290812054600160c01b810463ffffffff1690600160e01b900460ff16613ad45760009150506126a8565b6000613ae882613ae2613b7f565b90612d00565b6001600160a01b0386166000908152609e602052604081205491925090613b20908390600160801b90046001600160801b0316613be3565b9050613b2c85826133f5565b979650505050505050565b6000600160801b8210613b7b5760405162461bcd60e51b81526004018080602001828103825260278152602001806142256027913960400191505060405180910390fd5b5090565b4290565b6000600160201b8210613b7b5760405162461bcd60e51b815260040180806020018281038252602681526020018061434a6026913960400191505060405180910390fd5b6000613bd283613da0565b80156126a857506126a88383613dd3565b600082613bf257506000612d5c565b82820282848281613bff57fe5b04146126a85760405162461bcd60e51b81526004018080602001828103825260218152602001806142c26021913960400191505060405180910390fd5b60006126a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613df6565b801580613d04575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613cd657600080fd5b505afa158015613cea573d6000803e3d6000fd5b505050506040513d6020811015613d0057600080fd5b5051155b613d3f5760405162461bcd60e51b815260040180806020018281038252603681526020018061439a6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610ad9908490613949565b60606116ea8484600085613e98565b6000613db3826301ffc9a760e01b613dd3565b80156114105750613dcc826001600160e01b0319613dd3565b1592915050565b6000806000613de28585613fe9565b91509150818015612c2f5750949350505050565b60008183613e825760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e47578181015183820152602001613e2f565b50505050905090810190601f168015613e745780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613e8e57fe5b0495945050505050565b606082471015613ed95760405162461bcd60e51b815260040180806020018281038252602681526020018061426e6026913960400191505060405180910390fd5b613ee285613704565b613f33576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310613f725780518252601f199092019160209182019101613f53565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fd4576040519150601f19603f3d011682016040523d82523d6000602084013e613fd9565b606091505b5091509150613b2c82828661411d565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106140715780518252601f199092019160209182019101614052565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d80600081146140d2576040519150601f19603f3d011682016040523d82523d6000602084013e6140d7565b606091505b50915091506020815110156140f55760008094509450505050614116565b8181806020019051602081101561410b57600080fd5b505190955093505050505b9250929050565b6060831561412c5750816126a8565b82511561413c5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315613e47578181015183820152602001613e2f565b8280548282559060005260206000209081019282156141d8579160200282015b828111156141d857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906141a3565b50613b7b9291505b80821115613b7b5780546001600160a01b03191681556001016141e056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735072697a65506f6f6c2f7265736572766552656769737472792d6e6f742d7a65726f416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725072697a65506f6f6c2f657869742d6665652d657863656564732d757365722d6d6178696d756d5072697a65506f6f6c2f756e6b6e6f776e2d746f6b656e00000000000000000053616665436173743a2076616c756520646f65736e27742066697420696e20333220626974735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63655072697a65506f6f6c2f6f6e6c792d7072697a65537472617465677900000000a2646970667358221220f4393b0623e961cf091e9e8dd7f9daddda87eb68809795b7c73097e3c133f48f64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102325760003560e01c8063888c2b6f11610130578063a7b2cc31116100b8578063e6d8a94b1161007c578063e6d8a94b14610956578063edb4e1cf1461095e578063f2fde38b14610966578063fc0c546a1461098c578063ffa1ad741461099457610232565b8063a7b2cc31146107c1578063b69ef8a8146107fe578063c587148514610806578063d4a1361d146108c5578063e323f8251461091a57610232565b806398bf3eb6116100ff57806398bf3eb6146107025780639d63848a1461070a5780639e167519146107625780639fe32a911461076a578063a016240b1461078757610232565b8063888c2b6f1461067d5780638da5cb5b146106cc5780638e71c1f6146106d457806391ca480e146106dc57610232565b8063630665b4116101be57806376687d3d1161018257806376687d3d146105ca57806378b3d327146105d257806379cb8563146105f85780637b99adb11461062a5780637cbab1c71461064757610232565b8063630665b41461052657806369e527da1461052e5780636a3fd4f9146105525780636b1b863a1461058c578063715018a6146105c257610232565b80632b0ab144116102055780632b0ab144146103bb5780632f7627e3146103f15780633ede50c61461041f578063494de9f7146104d257806352a387ab1461050057610232565b80630937eb541461023757806313f55e3914610251578063150b7a021461028957806316960d5514610334575b600080fd5b61023f610a11565b60408051918252519081900360200190f35b6102876004803603606081101561026757600080fd5b506001600160a01b03813581169160208101359091169060400135610a20565b005b6103176004803603608081101561029f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156102d957600080fd5b8201836020820111156102eb57600080fd5b803590602001918460018302840111600160201b8311171561030c57600080fd5b509092509050610ade565b604080516001600160e01b03199092168252519081900360200190f35b6102876004803603606081101561034a57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561037d57600080fd5b82018360208201111561038f57600080fd5b803590602001918460208302840111600160201b831117156103b057600080fd5b509092509050610aef565b610287600480360360608110156103d157600080fd5b506001600160a01b03813581169160208101359091169060400135610d9c565b6102876004803603604081101561040757600080fd5b506001600160a01b0381358116916020013516610e59565b6102876004803603606081101561043557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561045f57600080fd5b82018360208201111561047157600080fd5b803590602001918460208302840111600160201b8311171561049257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610fa8915050565b61023f600480360360408110156104e857600080fd5b506001600160a01b038135811691602001351661119a565b61023f6004803603602081101561051657600080fd5b50356001600160a01b03166112a1565b61023f6113f0565b6105366113f6565b604080516001600160a01b039092168252519081900360200190f35b6105786004803603602081101561056857600080fd5b50356001600160a01b0316611405565b604080519115158252519081900360200190f35b610287600480360360608110156105a257600080fd5b506001600160a01b03813581169160208101359160409091013516611418565b610287611620565b61023f6116cc565b610578600480360360208110156105e857600080fd5b50356001600160a01b03166116d2565b61023f6004803603606081101561060e57600080fd5b506001600160a01b0381351690602081013590604001356116dd565b6102876004803603602081101561064057600080fd5b50356116f2565b6102876004803603606081101561065d57600080fd5b506001600160a01b03813581169160208101359091169060400135611760565b6106b36004803603606081101561069357600080fd5b506001600160a01b038135811691602081013590911690604001356119ac565b6040805192835260208301919091528051918290030190f35b6105366119c6565b6105366119d5565b610287600480360360208110156106f257600080fd5b50356001600160a01b03166119e4565b610536611a4f565b610712611a5e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561074e578181015183820152602001610736565b505050509050019250505060405180910390f35b61023f611ac0565b61023f6004803603602081101561078057600080fd5b5035611ac6565b61023f6004803603608081101561079d57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135611bf4565b610287600480360360608110156107d757600080fd5b506001600160a01b03813516906001600160801b0360208201358116916040013516611e2b565b61023f611f81565b6102876004803603608081101561081c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561084657600080fd5b82018360208201111561085857600080fd5b803590602001918460208302840111600160201b8311171561087957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602001356001600160a01b0316611f8b565b6108eb600480360360208110156108db57600080fd5b50356001600160a01b0316612089565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102876004803603608081101561093057600080fd5b506001600160a01b038135811691602081013591604082013581169160600135166120b9565b61023f61226e565b61023f6123e4565b6102876004803603602081101561097c57600080fd5b50356001600160a01b03166123ea565b6105366124ed565b61099c6124f7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109d65781810151838201526020016109be565b50505050905090810190601f168015610a035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610a1b612518565b905090565b6099546001600160a01b0316610a34612623565b6001600160a01b031614610a7d576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b610a88838383612627565b15610ad957816001600160a01b0316836001600160a01b03167fb0bac59718cd343c80a813518afcf36846cfcfe6d56e2b3cab9bd49f5f9b251c836040518082815260200191505060405180910390a35b505050565b630a85bd0160e11b95945050505050565b6099546001600160a01b0316610b03612623565b6001600160a01b031614610b4c576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b610b55836126af565b610ba6576040805162461bcd60e51b815260206004820181905260248201527f5072697a65506f6f6c2f696e76616c69642d65787465726e616c2d746f6b656e604482015290519081900360640190fd5b80610bb057610d96565b60005b81811015610d1d57836001600160a01b03166342842e0e3087868686818110610bd857fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610c3557600080fd5b505af1925050508015610c46575060015b610d15573d808015610c74576040519150601f19603f3d011682016040523d82523d6000602084013e610c79565b606091505b507f17e975018310f88872b58d4d8263adca83cf5c1893496ea2a86923dab15276ad816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cd9578181015183820152602001610cc1565b50505050905090810190601f168015610d065780820380516001836020036101000a031916815260200191505b509250505060405180910390a1505b600101610bb3565b50826001600160a01b0316846001600160a01b03167f69c2de32bc4d47f488e72626a6cfdee85089342e52675e7de79c4b417623960c848460405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a35b50505050565b6099546001600160a01b0316610db0612623565b6001600160a01b031614610df9576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b610e04838383612627565b15610ad957816001600160a01b0316836001600160a01b03167fc65f48aca3b7a99b7443d04b8ffbb073156179bc628dc3f7def5047748973469836040518082815260200191505060405180910390a3505050565b610e61612623565b6001600160a01b0316610e726119c6565b6001600160a01b031614610ebb576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f0a57600080fd5b505afa158015610f1e573d6000803e3d6000fd5b505050506040513d6020811015610f3457600080fd5b50511115610fa457816001600160a01b0316635c19a95c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050505b5050565b600054610100900460ff1680610fc15750610fc16126c4565b80610fcf575060005460ff16155b61100a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015611035576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03841661107a5760405162461bcd60e51b815260040180806020018281038252602281526020018061424c6022913960400191505060405180910390fd5b82518067ffffffffffffffff8111801561109357600080fd5b506040519080825280602002602001820160405280156110bd578160200160208202803683370190505b5080516110d291609891602090910190614183565b5060005b818110156111095760008582815181106110ec57fe5b6020026020010151905061110081836126d5565b506001016110d6565b50611112612800565b61111a6128b1565b611125600019612946565b609780546001600160a01b0319166001600160a01b038716908117909155609a849055604080519182526020820185905280517f25ff68dd81b34665b5ba7e553ee5511bf6812e12adb4a7e2c0d9e26b3099ce799281900390910190a1508015610d96576000805461ff001916905550505050565b6000816111a681612981565b6111e5576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b61126a8484856001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d602081101561126157600080fd5b50516000612a3d565b50506001600160a01b039081166000908152609f60209081526040808320949093168252929092529020546001600160c01b031690565b600080609760009054906101000a90046001600160a01b03166001600160a01b031663f5e3542b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b505190506001600160a01b0381163314611376576040805162461bcd60e51b81526020600482015260166024820152755072697a65506f6f6c2f6f6e6c792d7265736572766560501b604482015290519081900360640190fd5b609b80546000918290559061138a82612a53565b90506113a98582611399612c38565b6001600160a01b03169190612cae565b6040805183815290516001600160a01b038716917f1c71c8e11fd443227c8f8d3dc1a237a3a5e8310b540c7fbcf5169754aedf42c9919081900360200190a2949350505050565b609d5490565b60a0546001600160a01b031681565b6000611410826126af565b90505b919050565b6099546001600160a01b031661142c612623565b6001600160a01b031614611475576040805162461bcd60e51b815260206004820152601c60248201526000805160206143d0833981519152604482015290519081900360640190fd5b8061147f81612981565b6114be576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b826114c857610d96565b609d5483111561151f576040805162461bcd60e51b815260206004820152601d60248201527f5072697a65506f6f6c2f61776172642d657863656564732d617661696c000000604482015290519081900360640190fd5b609d5461152c9084612d00565b609d5561153c8484846000612d62565b60006115488385612e48565b90506115ce8584856001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561159c57600080fd5b505afa1580156115b0573d6000803e3d6000fd5b505050506040513d60208110156115c657600080fd5b505184612a3d565b826001600160a01b0316856001600160a01b03167fe2554529d99ab7a67db6b4cea2b32c7d55ae325f958861e05f304fdded867e31866040518082815260200191505060405180910390a35050505050565b611628612623565b6001600160a01b03166116396119c6565b6001600160a01b031614611682576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b609c5481565b600061141082612981565b60006116ea848484612e80565b949350505050565b6116fa612623565b6001600160a01b031661170b6119c6565b6001600160a01b031614611754576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b61175d81612946565b50565b3361176a81612981565b6117a9576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b6001600160a01b03841615611883576000336001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561180757600080fd5b505afa15801561181b573d6000803e3d6000fd5b505050506040513d602081101561183157600080fd5b50519050600061184386338484612ed1565b9050846001600160a01b0316866001600160a01b031614611875576118723361186c8487612d00565b83612f60565b90505b611880863383612fa6565b50505b6001600160a01b038316158015906118ad5750836001600160a01b0316836001600160a01b031614155b15611904576119048333336001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561123757600080fd5b6001600160a01b0384161580159061192657506099546001600160a01b031615155b15610d96576099546040805163b221095760e01b81526001600160a01b0387811660048301528681166024830152604482018690523360648301529151919092169163b221095791608480830192600092919082900301818387803b15801561198e57600080fd5b505af11580156119a2573d6000803e3d6000fd5b5050505050505050565b6000806119ba858585613144565b90969095509350505050565b6033546001600160a01b031690565b6097546001600160a01b031681565b6119ec612623565b6001600160a01b03166119fd6119c6565b6001600160a01b031614611a46576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b61175d816132e2565b6099546001600160a01b031681565b60606098805480602002602001604051908101604052809291908181526020018280548015611ab657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a98575b5050505050905090565b609a5481565b600080609760009054906101000a90046001600160a01b03166001600160a01b031663f5e3542b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1757600080fd5b505afa158015611b2b573d6000803e3d6000fd5b505050506040513d6020811015611b4157600080fd5b505190506001600160a01b038116611b5d576000915050611413565b6000816001600160a01b031663010dfa58306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611bac57600080fd5b505afa158015611bc0573d6000803e3d6000fd5b505050506040513d6020811015611bd657600080fd5b5051905080611bea57600092505050611413565b6116ea84826133f5565b600060026065541415611c4e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260655582611c5d81612981565b611c9c576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b600080611caa888789613144565b9150915084821115611ced5760405162461bcd60e51b81526004018080602001828103825260278152602001806143036027913960400191505060405180910390fd5b611cf8888783613416565b856001600160a01b031663631b5dfb611d0f612623565b8a8a6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015611d6757600080fd5b505af1158015611d7b573d6000803e3d6000fd5b505050506000611d948389612d0090919063ffffffff16565b90506000611da182612a53565b9050611db08a82611399612c38565b876001600160a01b03168a6001600160a01b0316611dcc612623565b604080518d81526020810186905280820189905290516001600160a01b0392909216917f0271704a58fd2953e49b87d67a0a3ce28a58147de98a5457f60b4686f63850309181900360600190a450506001606555509695505050505050565b82611e3581612981565b611e74576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b611e7c612623565b6001600160a01b0316611e8d6119c6565b6001600160a01b031614611ed6576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6040805180820182526001600160801b0380851680835286821660208085018281526001600160a01b038b166000818152609e84528890209651875492518716600160801b029087166fffffffffffffffffffffffffffffffff1990931692909217909516179094558451928352928201528083019190915290517ffb0ba2cf86a2b03bcf387753a2192da80a006afa99dd022bb301c78e323bf1b99181900360600190a150505050565b6000610a1b6134d7565b600054610100900460ff1680611fa45750611fa46126c4565b80611fb2575060005460ff16155b611fed5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015612018576000805460ff1961ff0019909116610100171660011790555b612023858585610fa8565b60a080546001600160a01b0319166001600160a01b0384811691909117918290556040519116907fa5670b49a0ee863080ae28858bb5d9bcc1eb0d2a6f4c9c3a8accc43b8f445d2590600090a28015612082576000805461ff00191690555b5050505050565b6001600160a01b03166000908152609e60205260409020546001600160801b0380821692600160801b9092041690565b60026065541415612111576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026065558161212081612981565b61215f576040805162461bcd60e51b8152602060048201526017602482015260008051602061432a833981519152604482015290519081900360640190fd5b8361216981613537565b6121ba576040805162461bcd60e51b815260206004820152601f60248201527f5072697a65506f6f6c2f657863656564732d6c69717569646974792d63617000604482015290519081900360640190fd5b60006121c4612623565b90506121d287878787612d62565b6121f18130886121e0612c38565b6001600160a01b031692919061355b565b6121fa866135b5565b846001600160a01b0316876001600160a01b0316826001600160a01b03167f6ce569498e0f86f147466ac49211cb2a1ffe06195adb805e383b3f2365109160898860405180838152602001826001600160a01b031681526020019250505060405180910390a4505060016065555050505050565b6000600260655414156122c8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260655560006122d7612518565b905060006122e36134d7565b905060008282116122f55760006122ff565b6122ff8284612d00565b90506000609d548211612313576000612321565b609d54612321908390612d00565b905080156123d357600061233482611ac6565b9050801561238e57609b5461234990826136aa565b609b556123568282612d00565b6040805183815290519193507f5f1703ccfa2730d4245350f228079926a37f26a44ecf6978a7eeafff0af11407919081900360200190a15b609d5461239b90836136aa565b609d556040805183815290517fce2b6e507c7ca1a20ce136810f524eefc19ba4c7e4866eb6cc0cba76e778d4be9181900360200190a1505b609d54945050505050600160655590565b609b5481565b6123f2612623565b6001600160a01b03166124036119c6565b6001600160a01b03161461244c576040805162461bcd60e51b815260206004820181905260248201526000805160206142e3833981519152604482015290519081900360640190fd5b6001600160a01b0381166124915760405162461bcd60e51b81526004018080602001828103825260268152602001806141ff6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a1b612c38565b60405180604001604052806005815260200164332e342e3560d81b81525081565b600080609b5490506060609880548060200260200160405190810160405280929190818152602001828054801561257857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161255a575b505083519394506000925050505b8181101561261a5761261083828151811061259d57fe5b60200260200101516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125dd57600080fd5b505afa1580156125f1573d6000803e3d6000fd5b505050506040513d602081101561260757600080fd5b505185906136aa565b9350600101612586565b50919250505090565b3390565b6000612632836126af565b612683576040805162461bcd60e51b815260206004820181905260248201527f5072697a65506f6f6c2f696e76616c69642d65787465726e616c2d746f6b656e604482015290519081900360640190fd5b81612690575060006126a8565b6126a46001600160a01b0384168584612cae565b5060015b9392505050565b60a0546001600160a01b039081169116141590565b60006126cf30613704565b15905090565b306001600160a01b0316826001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b15801561271857600080fd5b505afa15801561272c573d6000803e3d6000fd5b505050506040513d602081101561274257600080fd5b50516001600160a01b03161461279f576040805162461bcd60e51b815260206004820152601e60248201527f5072697a65506f6f6c2f746f6b656e2d6374726c722d6d69736d617463680000604482015290519081900360640190fd5b81609882815481106127ad57fe5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051918416917f460e712b4a5d801d031ed673dea209b73ab854f7ddeb86b6c48082e92c3eee669190a25050565b600054610100900460ff168061281957506128196126c4565b80612827575060005460ff16155b6128625760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff1615801561288d576000805460ff1961ff0019909116610100171660011790555b61289561370a565b61289d6137aa565b801561175d576000805461ff001916905550565b600054610100900460ff16806128ca57506128ca6126c4565b806128d8575060005460ff16155b6129135760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff1615801561293e576000805460ff1961ff0019909116610100171660011790555b61289d6138a3565b609c8190556040805182815290517f3ff20538222f568f27ff436c0c49dfd3e48d5b8f86533a3f759dc1c7089775ab9181900360200190a150565b6000606060988054806020026020016040519081016040528092919081815260200182805480156129db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116129bd575b505083519394506000925050505b81811015612a3257846001600160a01b0316838281518110612a0757fe5b60200260200101516001600160a01b03161415612a2a5760019350505050611413565b6001016129e9565b506000949350505050565b610d968484612a4e87878787612ed1565b612fa6565b600080612a5e612c38565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612aaf57600080fd5b505afa158015612ac3573d6000803e3d6000fd5b505050506040513d6020811015612ad957600080fd5b505160a0546040805163852a12e360e01b81526004810188905290519293506001600160a01b039091169163852a12e3916024808201926020929091908290030181600087803b158015612b2c57600080fd5b505af1158015612b40573d6000803e3d6000fd5b505050506040513d6020811015612b5657600080fd5b505115612baa576040805162461bcd60e51b815260206004820152601f60248201527f436f6d706f756e645072697a65506f6f6c2f72656465656d2d6661696c656400604482015290519081900360640190fd5b6000612c2f82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612bfd57600080fd5b505afa158015612c11573d6000803e3d6000fd5b505050506040513d6020811015612c2757600080fd5b505190612d00565b95945050505050565b60a05460408051636f307dc360e01b815290516000926001600160a01b031691636f307dc3916004808301926020929190829003018186803b158015612c7d57600080fd5b505afa158015612c91573d6000803e3d6000fd5b505050506040513d6020811015612ca757600080fd5b5051905090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ad9908490613949565b600082821115612d57576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b6099546001600160a01b031615612df157609954604080516304d7f3db60e41b81526001600160a01b038781166004830152602482018790528581166044830152848116606483015291519190921691634d7f3db091608480830192600092919082900301818387803b158015612dd857600080fd5b505af1158015612dec573d6000803e3d6000fd5b505050505b816001600160a01b0316635d7b075885856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561198e57600080fd5b6001600160a01b0382166000908152609e60205260408120546126a8908390612e7b9082906001600160801b03166133f5565b6139fa565b6001600160a01b0383166000908152609e60205260408120548190612eb6908590600160801b90046001600160801b03166133f5565b905080612ec75760009150506126a8565b612c2f8382613a1f565b6001600160a01b038381166000908152609f6020908152604080832093881683529290529081208054829190600160e01b900460ff16612f145760009150612f56565b6000612f21888888613a86565b8254909150612f529088908890612f4d908990612f47906001600160c01b0316876136aa565b906136aa565b612f60565b9250505b5095945050505050565b6001600160a01b0383166000908152609e60205260408120548190612f8f9085906001600160801b03166133f5565b905080831115612f9d578092505b50909392505050565b6001600160a01b038083166000908152609f602090815260408083209387168352929052819020548151606081019092526001600160c01b03169080612feb84613b37565b6001600160801b03168152602001613009613004613b7f565b613b83565b63ffffffff908116825260016020928301526001600160a01b038681166000908152609f84526040808220928a168252918452819020845181549486015195909201516001600160c01b03199094166001600160c01b039092169190911763ffffffff60c01b1916600160c01b94909216939093021760ff60e01b1916600160e01b91151591909102179055818110156130ec576001600160a01b038084169085167f2f92d56910619b38bc29fd8e4ca5e56359edac7a0c086cdcd305fb603fa374916130d68585612d00565b60408051918252519081900360200190a3610d96565b80821015610d96576001600160a01b038084169085167ff584c579437bc25785b953cc4d8d247251812751e1871c6130cbdecf95a106cf61312d8486612d00565b60408051918252519081900360200190a350505050565b6000806000846001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561319657600080fd5b505afa1580156131aa573d6000803e3d6000fd5b505050506040513d60208110156131c057600080fd5b5051905083811015613212576040805162461bcd60e51b81526020600482015260166024820152755072697a65506f6f6c2f696e737566662d66756e647360501b604482015290519081900360640190fd5b61321f8686836000612a3d565b60006132348661322f8488612d00565b612e48565b6001600160a01b038088166000908152609f60209081526040808320938c16835292905290812054919250906001600160c01b031682116132ab576001600160a01b038088166000908152609f60209081526040808320938c16835292905220546132a8906001600160c01b031683612d00565b90505b60006132b78888612e48565b90508082116132c657816132c8565b805b94506132d48186612d00565b955050505050935093915050565b6001600160a01b03811661333d576040805162461bcd60e51b815260206004820181905260248201527f5072697a65506f6f6c2f7072697a6553747261746567792d6e6f742d7a65726f604482015290519081900360640190fd5b61335a6001600160a01b038216600162a1cb1960e01b0319613bc7565b6133ab576040805162461bcd60e51b815260206004820152601f60248201527f5072697a65506f6f6c2f7072697a6553747261746567792d696e76616c696400604482015290519081900360640190fd5b609980546001600160a01b0319166001600160a01b0383169081179091556040517f7f58dc86bc2e435cb77ca0edb1df55e25f90caf2d6bd866971715437d456a21290600090a250565b6000806134028385613be3565b90506116ea81670de0b6b3a7640000613c3c565b6001600160a01b038083166000908152609f602090815260408083209387168352929052205461345890613453906001600160c01b031683612d00565b613b37565b6001600160a01b038084166000818152609f602090815260408083209489168084529482529182902080546001600160c01b0319166001600160801b0396909616959095179094558051858152905191937ff584c579437bc25785b953cc4d8d247251812751e1871c6130cbdecf95a106cf92918290030190a3505050565b60a05460408051633af9e66960e01b815230600482015290516000926001600160a01b031691633af9e66991602480830192602092919082900301818787803b15801561352357600080fd5b505af1158015612c91573d6000803e3d6000fd5b600080613542612518565b609c5490915061355282856136aa565b11159392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610d96908590613949565b60a0546135de906001600160a01b0316826135ce612c38565b6001600160a01b03169190613c7e565b60a0546040805163140e25ad60e31b81526004810184905290516001600160a01b039092169163a0712d68916024808201926020929091908290030181600087803b15801561362c57600080fd5b505af1158015613640573d6000803e3d6000fd5b505050506040513d602081101561365657600080fd5b50511561175d576040805162461bcd60e51b815260206004820152601d60248201527f436f6d706f756e645072697a65506f6f6c2f6d696e742d6661696c6564000000604482015290519081900360640190fd5b6000828201838110156126a8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3b151590565b600054610100900460ff168061372357506137236126c4565b80613731575060005460ff16155b61376c5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff1615801561289d576000805460ff1961ff001990911661010017166001179055801561175d576000805461ff001916905550565b600054610100900460ff16806137c357506137c36126c4565b806137d1575060005460ff16155b61380c5760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015613837576000805460ff1961ff0019909116610100171660011790555b6000613841612623565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561175d576000805461ff001916905550565b600054610100900460ff16806138bc57506138bc6126c4565b806138ca575060005460ff16155b6139055760405162461bcd60e51b815260040180806020018281038252602e815260200180614294602e913960400191505060405180910390fd5b600054610100900460ff16158015613930576000805460ff1961ff0019909116610100171660011790555b6001606555801561175d576000805461ff001916905550565b606061399e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d919092919063ffffffff16565b805190915015610ad9578080602001905160208110156139bd57600080fd5b5051610ad95760405162461bcd60e51b815260040180806020018281038252602a815260200180614370602a913960400191505060405180910390fd5b600080613a0984609a546133f5565b905080831115613a17578092505b509092915050565b6000808211613a75576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381613a7e57fe5b049392505050565b6001600160a01b038281166000908152609f60209081526040808320938716835292905290812054600160c01b810463ffffffff1690600160e01b900460ff16613ad45760009150506126a8565b6000613ae882613ae2613b7f565b90612d00565b6001600160a01b0386166000908152609e602052604081205491925090613b20908390600160801b90046001600160801b0316613be3565b9050613b2c85826133f5565b979650505050505050565b6000600160801b8210613b7b5760405162461bcd60e51b81526004018080602001828103825260278152602001806142256027913960400191505060405180910390fd5b5090565b4290565b6000600160201b8210613b7b5760405162461bcd60e51b815260040180806020018281038252602681526020018061434a6026913960400191505060405180910390fd5b6000613bd283613da0565b80156126a857506126a88383613dd3565b600082613bf257506000612d5c565b82820282848281613bff57fe5b04146126a85760405162461bcd60e51b81526004018080602001828103825260218152602001806142c26021913960400191505060405180910390fd5b60006126a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613df6565b801580613d04575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613cd657600080fd5b505afa158015613cea573d6000803e3d6000fd5b505050506040513d6020811015613d0057600080fd5b5051155b613d3f5760405162461bcd60e51b815260040180806020018281038252603681526020018061439a6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610ad9908490613949565b60606116ea8484600085613e98565b6000613db3826301ffc9a760e01b613dd3565b80156114105750613dcc826001600160e01b0319613dd3565b1592915050565b6000806000613de28585613fe9565b91509150818015612c2f5750949350505050565b60008183613e825760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e47578181015183820152602001613e2f565b50505050905090810190601f168015613e745780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613e8e57fe5b0495945050505050565b606082471015613ed95760405162461bcd60e51b815260040180806020018281038252602681526020018061426e6026913960400191505060405180910390fd5b613ee285613704565b613f33576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310613f725780518252601f199092019160209182019101613f53565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fd4576040519150601f19603f3d011682016040523d82523d6000602084013e613fd9565b606091505b5091509150613b2c82828661411d565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106140715780518252601f199092019160209182019101614052565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d80600081146140d2576040519150601f19603f3d011682016040523d82523d6000602084013e6140d7565b606091505b50915091506020815110156140f55760008094509450505050614116565b8181806020019051602081101561410b57600080fd5b505190955093505050505b9250929050565b6060831561412c5750816126a8565b82511561413c5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315613e47578181015183820152602001613e2f565b8280548282559060005260206000209081019282156141d8579160200282015b828111156141d857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906141a3565b50613b7b9291505b80821115613b7b5780546001600160a01b03191681556001016141e056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735072697a65506f6f6c2f7265736572766552656769737472792d6e6f742d7a65726f416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725072697a65506f6f6c2f657869742d6665652d657863656564732d757365722d6d6178696d756d5072697a65506f6f6c2f756e6b6e6f776e2d746f6b656e00000000000000000053616665436173743a2076616c756520646f65736e27742066697420696e20333220626974735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63655072697a65506f6f6c2f6f6e6c792d7072697a65537472617465677900000000a2646970667358221220f4393b0623e961cf091e9e8dd7f9daddda87eb68809795b7c73097e3c133f48f64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
