{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockATokenRepayment",
  "sourceName": "contracts/mocks/tokens/MockATokenRepayment.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IPool",
          "name": "pool",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "BalanceTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balanceIncrease",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "aTokenDecimals",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "aTokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "aTokenSymbol",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balanceIncrease",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "MockRepayment",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ATOKEN_REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EIP712_REVISION",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POOL",
      "outputs": [
        {
          "internalType": "contract IPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RESERVE_TREASURY_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiverOfUnderlying",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIncentivesController",
      "outputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getPreviousIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getScaledUserBalanceAndSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "handleRepayment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IPool",
          "name": "initializingPool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "aTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "aTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "aTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mintToTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "rescueTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "scaledBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "scaledTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "setIncentivesController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferOnLiquidation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferUnderlyingTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e0604052600080553480156200001557600080fd5b506040516200394c3803806200394c83398101604081905262000038916200021f565b80806040518060400160405280600b81526020016a105513d2d15397d253541360aa1b8152506040518060400160405280600b81526020016a105513d2d15397d253541360aa1b81525060008383838383838383836001600160a01b0316630542975c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f191906200021f565b6001600160a01b031660805282516200011290603790602086019062000160565b5081516200012890603890602085019062000160565b506039805460ff191660ff9290921691909117905550506001600160a01b031660a05250504660c05250620002839650505050505050565b8280546200016e9062000246565b90600052602060002090601f016020900481019282620001925760008555620001dd565b82601f10620001ad57805160ff1916838001178555620001dd565b82800160010185558215620001dd579182015b82811115620001dd578251825591602001919060010190620001c0565b50620001eb929150620001ef565b5090565b5b80821115620001eb5760008155600101620001f0565b6001600160a01b03811681146200021c57600080fd5b50565b6000602082840312156200023257600080fd5b81516200023f8162000206565b9392505050565b600181811c908216806200025b57607f821691505b602082108114156200027d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c051613637620003156000396000611d2b0152600081816103bc0152818161071d0152818161088401528181610a8301528181610c9d01528181610d6a01528181610e8401528181610f6701528181610fe70152818161110f0152818161176701528181611a37015281816123e00152612557015260008181611196015261182601526136376000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c8063781603761161012a578063b1bf962d116100bd578063d7020d0a1161008c578063e075398611610071578063e07539861461058c578063e655dbd8146105e8578063f866c319146105fb57600080fd5b8063d7020d0a14610533578063dd62ed3e1461054657600080fd5b8063b1bf962d146104f2578063b3f1c93d146104fa578063cea9d26f1461050d578063d505accf1461052057600080fd5b8063a457c2d7116100f9578063a457c2d714610490578063a9059cbb146104a3578063ae167335146104b6578063b16a19de146104d457600080fd5b806378160376146104265780637df5bd3b146104625780637ecebe001461047557806395d89b411461048857600080fd5b806330adf81f116101bd5780634efecaa51161018c57806370a082311161017157806370a08231146103a45780637535d246146103b757806375d264131461040357600080fd5b80634efecaa51461037e5780636fd976761461039157600080fd5b806330adf81f14610327578063313ce5671461034e5780633644e51514610363578063395093511461036b57600080fd5b806318160ddd116101f957806318160ddd146102e4578063183fb413146102ec5780631da24f3e1461030157806323b872dd1461031457600080fd5b806306fdde031461022b578063095ea7b3146102495780630afbcdc91461026c5780630bd7ad3b146102ce575b600080fd5b61023361060e565b604051610240919061309e565b60405180910390f35b61025c6102573660046130ed565b6106a0565b6040519015158152602001610240565b6102b961027a366004613119565b73ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546036546fffffffffffffffffffffffffffffffff90911691565b60408051928352602083019190915201610240565b6102d6600181565b604051908152602001610240565b6102d66106b6565b6102ff6102fa366004613190565b610795565b005b6102d661030f366004613119565b610b54565b61025c610322366004613284565b610b93565b6102d67f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460405160ff9091168152602001610240565b6102d6610c13565b61025c6103793660046130ed565b610c22565b6102ff61038c3660046130ed565b610c66565b6102ff61039f366004613284565b610d33565b6102d66103b2366004613119565b610e35565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b603954610100900473ffffffffffffffffffffffffffffffffffffffff166103de565b6102336040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6102ff6104703660046132c5565b610f30565b6102d6610483366004613119565b611029565b610233611054565b61025c61049e3660046130ed565b611063565b61025c6104b13660046130ed565b6110a7565b603c5473ffffffffffffffffffffffffffffffffffffffff166103de565b603d5473ffffffffffffffffffffffffffffffffffffffff166103de565b6102d66110ca565b61025c6105083660046132e7565b6110d5565b6102ff61051b366004613284565b611192565b6102ff61052e36600461332d565b6113d6565b6102ff6105413660046132e7565b611730565b6102d661055436600461339b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b6102d661059a366004613119565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6102ff6105f6366004613119565b611822565b6102ff610609366004613284565b611a00565b60606037805461061d906133d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610649906133d4565b80156106965780601f1061066b57610100808354040283529160200191610696565b820191906000526020600020905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b60006106ad338484611ab2565b50600192915050565b6000806106c260365490565b9050806106d157600091505090565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261078f917f0000000000000000000000000000000000000000000000000000000000000000169063d15e005390602401602060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190613422565b8290611b20565b91505090565b60015460029060ff16806107a85750303b155b806107b4575060005481115b610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60015460ff1615801561088257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f38370000000000000000000000000000000000000000000000000000000000008152509061093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5061097f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7792505050565b6109be86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b8a92505050565b603980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8b16179055603c805473ffffffffffffffffffffffffffffffffffffffff808f167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603d80548e8416921691909117905560398054918c16610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055610a7b611b9d565b603b819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8e8d8d8d8d8d8d8d8d604051610b0e99989796959493929190613484565b60405180910390a38015610b4557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603460205260408120546fffffffffffffffffffffffffffffffff165b92915050565b600080610b9f83611c62565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260356020908152604080832033808552925290912054919250610bfd91879190610bf8906fffffffffffffffffffffffffffffffff86169061352e565b611ab2565b610c08858583611d08565b506001949350505050565b6000610c1d611d27565b905090565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf8908690613545565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50603d54610d2f9073ffffffffffffffffffffffffffffffffffffffff168383611d60565b5050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fbfd31b362487106a121ca0a2568e198562a92db8322b94cb8ddcead020c7d8cf9060600160405180910390a1505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091610b8d917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190613422565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260409020546fffffffffffffffffffffffffffffffff165b90611b20565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5081610fde575050565b603c54611024907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff168484611e33565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603a6020526040812054610b8d565b60606038805461061d906133d4565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf890869061352e565b6000806110b383611c62565b90506110c0338583611d08565b5060019392505050565b6000610c1d60365490565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152600090337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5061118985858585611e33565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611223919061355d565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b4919061357a565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50603d5460408051808201909152600281527f383500000000000000000000000000000000000000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff868116911614156113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506113d073ffffffffffffffffffffffffffffffffffffffff85168484611d60565b50505050565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8816611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50834211156040518060400160405280600281526020017f3738000000000000000000000000000000000000000000000000000000000000815250906114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5073ffffffffffffffffffffffffffffffffffffffff87166000908152603a6020526040812054906114fb610c13565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e001604051602081830303815290604052805190602001206040516020016115bc9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611642573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f3739000000000000000000000000000000000000000000000000000000000000815250906116e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506116f4826001613545565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152603a6020526040902055611725898989611ab2565b505050505050505050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506117e184848484612074565b73ffffffffffffffffffffffffffffffffffffffff831630146113d057603d546113d09073ffffffffffffffffffffffffffffffffffffffff168484611d60565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b3919061355d565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611944919061357a565b6040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250906119b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50506039805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506110248383836000612392565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517611b5557600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b8051610d2f906037906020840190612fa3565b8051610d2f906038906020840190612fa3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611bc861260e565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006fffffffffffffffffffffffffffffffff821115611d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161083c565b5090565b6110248383836fffffffffffffffffffffffffffffffff166001612392565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611d585750603b5490565b610c1d611b9d565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af1611dc3573d6000803e3d6000fd5b50611dcd84612618565b6113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f475076323a206661696c6564207472616e736665720000000000000000000000604482015260640161083c565b600080611e4084846126e4565b60408051808201909152600281527f3234000000000000000000000000000000000000000000000000000000000000602082015290915081611eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291611f0c918491700100000000000000000000000000000000900416611b20565b611f168387611b20565b611f20919061352e565b9050611f2b85611c62565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055611f9387611f8e85611c62565b612723565b6000611f9f8288613545565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161200191815260200190565b60405180910390a3604080518281526020810184905290810187905273ffffffffffffffffffffffffffffffffffffffff808a1691908b16907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35050159695505050505050565b600061208083836126e4565b60408051808201909152600281527f32350000000000000000000000000000000000000000000000000000000000006020820152909150816120ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff808216929161214c918491700100000000000000000000000000000000900416611b20565b6121568386611b20565b612160919061352e565b905061216b84611c62565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556121d3876121ce85611c62565b61289f565b848111156122b25760006121e7868361352e565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224991815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff89169081907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a350612389565b60006122be828761352e565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161232091815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff80891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f90906060015b60405180910390a3505b50505050505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052916000917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d9190613422565b9050600061249382610f2a8973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b905060006124d983610f2a8973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b90506124e788888886612903565b84156125b4576040517fd5ed393300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015289811660248301528881166044830152606482018890526084820184905260a482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d5ed39339060c401600060405180830381600087803b15801561259b57600080fd5b505af11580156125af573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff8088169089167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86666125fa89876126e4565b60408051918252602082018890520161237f565b6060610c1d61060e565b6000612658565b7f08c379a00000000000000000000000000000000000000000000000000000000060005260206004528060245250806044525060646000fd5b3d801561269757602081146126d1576126927f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f61261f565b6126de565b823b6126c8576126c87f475076323a206e6f74206120636f6e7472616374000000000000000000000000601461261f565b600191506126de565b3d6000803e600051151591505b50919050565b600081156b033b2e3c9fd0803ce80000006002840419048411171561270857600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b6036546127426fffffffffffffffffffffffffffffffff831682613545565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612787838261359c565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612898576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018590526fffffffffffffffffffffffffffffffff841660448301528216906331873e2e90606401600060405180830381600087803b15801561288457600080fd5b505af1158015611725573d6000803e3d6000fd5b5050505050565b6036546128be6fffffffffffffffffffffffffffffffff83168261352e565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff1661278783826135d0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260408120546fffffffffffffffffffffffffffffffff808216929161295f918491700100000000000000000000000000000000900416611b20565b6129698385611b20565b612973919061352e565b905060006129b58673ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff871660009081526034602052604081205491925090612a1090839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611b20565b612a1a8387611b20565b612a24919061352e565b9050612a2f85611c62565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612a8e85611c62565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612b008888612afb612af68a8a6126e4565b611c62565b612cf8565b8215612baf5760405183815273ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805184815260208101859052808201879052905173ffffffffffffffffffffffffffffffffffffffff8a169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015612beb5750600081115b15612c995760405181815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805182815260208101839052808201879052905173ffffffffffffffffffffffffffffffffffffffff89169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161237f91815260200190565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612d3a82826135d0565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526034602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9586161790559186168152205416612dae838261359c565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612f9b576036546040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018390526fffffffffffffffffffffffffffffffff861660448301528316906331873e2e90606401600060405180830381600087803b158015612eae57600080fd5b505af1158015612ec2573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612389576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390526fffffffffffffffffffffffffffffffff851660448301528316906331873e2e90606401600060405180830381600087803b158015612f8157600080fd5b505af1158015612f95573d6000803e3d6000fd5b50505050505b505050505050565b828054612faf906133d4565b90600052602060002090601f016020900481019282612fd15760008555613017565b82601f10612fea57805160ff1916838001178555613017565b82800160010185558215613017579182015b82811115613017578251825591602001919060010190612ffc565b50611d049291505b80821115611d04576000815560010161301f565b6000815180845260005b818110156130595760208185018101518683018201520161303d565b8181111561306b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130b16020830184613033565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146130da57600080fd5b50565b80356130e8816130b8565b919050565b6000806040838503121561310057600080fd5b823561310b816130b8565b946020939093013593505050565b60006020828403121561312b57600080fd5b81356130b1816130b8565b803560ff811681146130e857600080fd5b60008083601f84011261315957600080fd5b50813567ffffffffffffffff81111561317157600080fd5b60208301915083602082850101111561318957600080fd5b9250929050565b60008060008060008060008060008060006101008c8e0312156131b257600080fd5b6131bb8c6130dd565b9a506131c960208d016130dd565b99506131d760408d016130dd565b98506131e560608d016130dd565b97506131f360808d01613136565b965067ffffffffffffffff8060a08e0135111561320f57600080fd5b61321f8e60a08f01358f01613147565b909750955060c08d013581101561323557600080fd5b6132458e60c08f01358f01613147565b909550935060e08d013581101561325b57600080fd5b5061326c8d60e08e01358e01613147565b81935080925050509295989b509295989b9093969950565b60008060006060848603121561329957600080fd5b83356132a4816130b8565b925060208401356132b4816130b8565b929592945050506040919091013590565b600080604083850312156132d857600080fd5b50508035926020909101359150565b600080600080608085870312156132fd57600080fd5b8435613308816130b8565b93506020850135613318816130b8565b93969395505050506040820135916060013590565b600080600080600080600060e0888a03121561334857600080fd5b8735613353816130b8565b96506020880135613363816130b8565b9550604088013594506060880135935061337f60808901613136565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156133ae57600080fd5b82356133b9816130b8565b915060208301356133c9816130b8565b809150509250929050565b600181811c908216806133e857607f821691505b602082108114156126de577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561343457600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808c168352808b1660208401525060ff8916604083015260c060608301526134c760c08301888a61343b565b82810360808401526134da81878961343b565b905082810360a08401526134ef81858761343b565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613540576135406134ff565b500390565b60008219821115613558576135586134ff565b500190565b60006020828403121561356f57600080fd5b81516130b1816130b8565b60006020828403121561358c57600080fd5b815180151581146130b157600080fd5b60006fffffffffffffffffffffffffffffffff8083168185168083038211156135c7576135c76134ff565b01949350505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156135f9576135f96134ff565b03939250505056fea2646970667358221220c8fce797689d8b22e367a244ae073aa63667bf02360fb6bd71c01f821337bc4d64736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c8063781603761161012a578063b1bf962d116100bd578063d7020d0a1161008c578063e075398611610071578063e07539861461058c578063e655dbd8146105e8578063f866c319146105fb57600080fd5b8063d7020d0a14610533578063dd62ed3e1461054657600080fd5b8063b1bf962d146104f2578063b3f1c93d146104fa578063cea9d26f1461050d578063d505accf1461052057600080fd5b8063a457c2d7116100f9578063a457c2d714610490578063a9059cbb146104a3578063ae167335146104b6578063b16a19de146104d457600080fd5b806378160376146104265780637df5bd3b146104625780637ecebe001461047557806395d89b411461048857600080fd5b806330adf81f116101bd5780634efecaa51161018c57806370a082311161017157806370a08231146103a45780637535d246146103b757806375d264131461040357600080fd5b80634efecaa51461037e5780636fd976761461039157600080fd5b806330adf81f14610327578063313ce5671461034e5780633644e51514610363578063395093511461036b57600080fd5b806318160ddd116101f957806318160ddd146102e4578063183fb413146102ec5780631da24f3e1461030157806323b872dd1461031457600080fd5b806306fdde031461022b578063095ea7b3146102495780630afbcdc91461026c5780630bd7ad3b146102ce575b600080fd5b61023361060e565b604051610240919061309e565b60405180910390f35b61025c6102573660046130ed565b6106a0565b6040519015158152602001610240565b6102b961027a366004613119565b73ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546036546fffffffffffffffffffffffffffffffff90911691565b60408051928352602083019190915201610240565b6102d6600181565b604051908152602001610240565b6102d66106b6565b6102ff6102fa366004613190565b610795565b005b6102d661030f366004613119565b610b54565b61025c610322366004613284565b610b93565b6102d67f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460405160ff9091168152602001610240565b6102d6610c13565b61025c6103793660046130ed565b610c22565b6102ff61038c3660046130ed565b610c66565b6102ff61039f366004613284565b610d33565b6102d66103b2366004613119565b610e35565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b603954610100900473ffffffffffffffffffffffffffffffffffffffff166103de565b6102336040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6102ff6104703660046132c5565b610f30565b6102d6610483366004613119565b611029565b610233611054565b61025c61049e3660046130ed565b611063565b61025c6104b13660046130ed565b6110a7565b603c5473ffffffffffffffffffffffffffffffffffffffff166103de565b603d5473ffffffffffffffffffffffffffffffffffffffff166103de565b6102d66110ca565b61025c6105083660046132e7565b6110d5565b6102ff61051b366004613284565b611192565b6102ff61052e36600461332d565b6113d6565b6102ff6105413660046132e7565b611730565b6102d661055436600461339b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b6102d661059a366004613119565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6102ff6105f6366004613119565b611822565b6102ff610609366004613284565b611a00565b60606037805461061d906133d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610649906133d4565b80156106965780601f1061066b57610100808354040283529160200191610696565b820191906000526020600020905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b60006106ad338484611ab2565b50600192915050565b6000806106c260365490565b9050806106d157600091505090565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261078f917f0000000000000000000000000000000000000000000000000000000000000000169063d15e005390602401602060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190613422565b8290611b20565b91505090565b60015460029060ff16806107a85750303b155b806107b4575060005481115b610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60015460ff1615801561088257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f38370000000000000000000000000000000000000000000000000000000000008152509061093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5061097f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7792505050565b6109be86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b8a92505050565b603980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8b16179055603c805473ffffffffffffffffffffffffffffffffffffffff808f167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603d80548e8416921691909117905560398054918c16610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055610a7b611b9d565b603b819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8e8d8d8d8d8d8d8d8d604051610b0e99989796959493929190613484565b60405180910390a38015610b4557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603460205260408120546fffffffffffffffffffffffffffffffff165b92915050565b600080610b9f83611c62565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260356020908152604080832033808552925290912054919250610bfd91879190610bf8906fffffffffffffffffffffffffffffffff86169061352e565b611ab2565b610c08858583611d08565b506001949350505050565b6000610c1d611d27565b905090565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf8908690613545565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50603d54610d2f9073ffffffffffffffffffffffffffffffffffffffff168383611d60565b5050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fbfd31b362487106a121ca0a2568e198562a92db8322b94cb8ddcead020c7d8cf9060600160405180910390a1505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091610b8d917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190613422565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260409020546fffffffffffffffffffffffffffffffff165b90611b20565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5081610fde575050565b603c54611024907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff168484611e33565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603a6020526040812054610b8d565b60606038805461061d906133d4565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf890869061352e565b6000806110b383611c62565b90506110c0338583611d08565b5060019392505050565b6000610c1d60365490565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152600090337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5061118985858585611e33565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611223919061355d565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b4919061357a565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50603d5460408051808201909152600281527f383500000000000000000000000000000000000000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff868116911614156113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506113d073ffffffffffffffffffffffffffffffffffffffff85168484611d60565b50505050565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8816611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50834211156040518060400160405280600281526020017f3738000000000000000000000000000000000000000000000000000000000000815250906114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5073ffffffffffffffffffffffffffffffffffffffff87166000908152603a6020526040812054906114fb610c13565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e001604051602081830303815290604052805190602001206040516020016115bc9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611642573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f3739000000000000000000000000000000000000000000000000000000000000815250906116e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506116f4826001613545565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152603a6020526040902055611725898989611ab2565b505050505050505050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506117e184848484612074565b73ffffffffffffffffffffffffffffffffffffffff831630146113d057603d546113d09073ffffffffffffffffffffffffffffffffffffffff168484611d60565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b3919061355d565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611944919061357a565b6040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250906119b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b50506039805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b506110248383836000612392565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517611b5557600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b8051610d2f906037906020840190612fa3565b8051610d2f906038906020840190612fa3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611bc861260e565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006fffffffffffffffffffffffffffffffff821115611d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161083c565b5090565b6110248383836fffffffffffffffffffffffffffffffff166001612392565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611d585750603b5490565b610c1d611b9d565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af1611dc3573d6000803e3d6000fd5b50611dcd84612618565b6113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f475076323a206661696c6564207472616e736665720000000000000000000000604482015260640161083c565b600080611e4084846126e4565b60408051808201909152600281527f3234000000000000000000000000000000000000000000000000000000000000602082015290915081611eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291611f0c918491700100000000000000000000000000000000900416611b20565b611f168387611b20565b611f20919061352e565b9050611f2b85611c62565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055611f9387611f8e85611c62565b612723565b6000611f9f8288613545565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161200191815260200190565b60405180910390a3604080518281526020810184905290810187905273ffffffffffffffffffffffffffffffffffffffff808a1691908b16907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35050159695505050505050565b600061208083836126e4565b60408051808201909152600281527f32350000000000000000000000000000000000000000000000000000000000006020820152909150816120ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c919061309e565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff808216929161214c918491700100000000000000000000000000000000900416611b20565b6121568386611b20565b612160919061352e565b905061216b84611c62565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556121d3876121ce85611c62565b61289f565b848111156122b25760006121e7868361352e565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224991815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff89169081907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a350612389565b60006122be828761352e565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161232091815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff80891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f90906060015b60405180910390a3505b50505050505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052916000917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d9190613422565b9050600061249382610f2a8973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b905060006124d983610f2a8973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b90506124e788888886612903565b84156125b4576040517fd5ed393300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015289811660248301528881166044830152606482018890526084820184905260a482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d5ed39339060c401600060405180830381600087803b15801561259b57600080fd5b505af11580156125af573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff8088169089167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86666125fa89876126e4565b60408051918252602082018890520161237f565b6060610c1d61060e565b6000612658565b7f08c379a00000000000000000000000000000000000000000000000000000000060005260206004528060245250806044525060646000fd5b3d801561269757602081146126d1576126927f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f61261f565b6126de565b823b6126c8576126c87f475076323a206e6f74206120636f6e7472616374000000000000000000000000601461261f565b600191506126de565b3d6000803e600051151591505b50919050565b600081156b033b2e3c9fd0803ce80000006002840419048411171561270857600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b6036546127426fffffffffffffffffffffffffffffffff831682613545565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612787838261359c565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612898576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018590526fffffffffffffffffffffffffffffffff841660448301528216906331873e2e90606401600060405180830381600087803b15801561288457600080fd5b505af1158015611725573d6000803e3d6000fd5b5050505050565b6036546128be6fffffffffffffffffffffffffffffffff83168261352e565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff1661278783826135d0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260408120546fffffffffffffffffffffffffffffffff808216929161295f918491700100000000000000000000000000000000900416611b20565b6129698385611b20565b612973919061352e565b905060006129b58673ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff871660009081526034602052604081205491925090612a1090839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611b20565b612a1a8387611b20565b612a24919061352e565b9050612a2f85611c62565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612a8e85611c62565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612b008888612afb612af68a8a6126e4565b611c62565b612cf8565b8215612baf5760405183815273ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805184815260208101859052808201879052905173ffffffffffffffffffffffffffffffffffffffff8a169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015612beb5750600081115b15612c995760405181815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805182815260208101839052808201879052905173ffffffffffffffffffffffffffffffffffffffff89169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161237f91815260200190565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612d3a82826135d0565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526034602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9586161790559186168152205416612dae838261359c565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612f9b576036546040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018390526fffffffffffffffffffffffffffffffff861660448301528316906331873e2e90606401600060405180830381600087803b158015612eae57600080fd5b505af1158015612ec2573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612389576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390526fffffffffffffffffffffffffffffffff851660448301528316906331873e2e90606401600060405180830381600087803b158015612f8157600080fd5b505af1158015612f95573d6000803e3d6000fd5b50505050505b505050505050565b828054612faf906133d4565b90600052602060002090601f016020900481019282612fd15760008555613017565b82601f10612fea57805160ff1916838001178555613017565b82800160010185558215613017579182015b82811115613017578251825591602001919060010190612ffc565b50611d049291505b80821115611d04576000815560010161301f565b6000815180845260005b818110156130595760208185018101518683018201520161303d565b8181111561306b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130b16020830184613033565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146130da57600080fd5b50565b80356130e8816130b8565b919050565b6000806040838503121561310057600080fd5b823561310b816130b8565b946020939093013593505050565b60006020828403121561312b57600080fd5b81356130b1816130b8565b803560ff811681146130e857600080fd5b60008083601f84011261315957600080fd5b50813567ffffffffffffffff81111561317157600080fd5b60208301915083602082850101111561318957600080fd5b9250929050565b60008060008060008060008060008060006101008c8e0312156131b257600080fd5b6131bb8c6130dd565b9a506131c960208d016130dd565b99506131d760408d016130dd565b98506131e560608d016130dd565b97506131f360808d01613136565b965067ffffffffffffffff8060a08e0135111561320f57600080fd5b61321f8e60a08f01358f01613147565b909750955060c08d013581101561323557600080fd5b6132458e60c08f01358f01613147565b909550935060e08d013581101561325b57600080fd5b5061326c8d60e08e01358e01613147565b81935080925050509295989b509295989b9093969950565b60008060006060848603121561329957600080fd5b83356132a4816130b8565b925060208401356132b4816130b8565b929592945050506040919091013590565b600080604083850312156132d857600080fd5b50508035926020909101359150565b600080600080608085870312156132fd57600080fd5b8435613308816130b8565b93506020850135613318816130b8565b93969395505050506040820135916060013590565b600080600080600080600060e0888a03121561334857600080fd5b8735613353816130b8565b96506020880135613363816130b8565b9550604088013594506060880135935061337f60808901613136565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156133ae57600080fd5b82356133b9816130b8565b915060208301356133c9816130b8565b809150509250929050565b600181811c908216806133e857607f821691505b602082108114156126de577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561343457600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808c168352808b1660208401525060ff8916604083015260c060608301526134c760c08301888a61343b565b82810360808401526134da81878961343b565b905082810360a08401526134ef81858761343b565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613540576135406134ff565b500390565b60008219821115613558576135586134ff565b500190565b60006020828403121561356f57600080fd5b81516130b1816130b8565b60006020828403121561358c57600080fd5b815180151581146130b157600080fd5b60006fffffffffffffffffffffffffffffffff8083168185168083038211156135c7576135c76134ff565b01949350505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156135f9576135f96134ff565b03939250505056fea2646970667358221220c8fce797689d8b22e367a244ae073aa63667bf02360fb6bd71c01f821337bc4d64736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
