{
  "_format": "hh-sol-artifact-1",
  "contractName": "FixedPricePTAMMV2",
  "sourceName": "contracts/cross-chain/FixedPricePTAMMV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_outputToken",
          "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": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": "PT",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isPaused",
          "type": "bool"
        }
      ],
      "name": "PauseStatusUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "priceOracle",
          "type": "address"
        }
      ],
      "name": "PriceOracleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "netPtIn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "netTokenOut",
          "type": "uint256"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TokenFunded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TokenWithdrawn",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isWhitelisted",
          "type": "bool"
        }
      ],
      "name": "WhitelistUpdated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "addFundWhitelisted",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "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": [
        {
          "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": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "isWhitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "outputToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "exactPtIn",
          "type": "uint256"
        }
      ],
      "name": "previewSwapExactPtForToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountTokenOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        }
      ],
      "name": "priceOracle",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isPaused",
          "type": "bool"
        },
        {
          "internalType": "contract IPChainlinkOracleEssential",
          "name": "oracle",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "removeFund",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "isPaused",
          "type": "bool"
        }
      ],
      "name": "setPausePtTrading",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceOracle",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_multiplier",
          "type": "uint256"
        }
      ],
      "name": "setPriceOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "isWhitelisted_",
          "type": "bool"
        }
      ],
      "name": "setWhitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "exactPtIn",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swapExactPtForToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "netTokenOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        }
      ],
      "name": "totalPt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "renounce",
          "type": "bool"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "PT",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawPt",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561000f575f5ffd5b5060405161260d38038061260d83398101604081905261002e91610113565b610036610047565b6001600160a01b0316608052610140565b600154600160a81b900460ff16156100b55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600154600160a01b900460ff90811614610111576001805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610123575f5ffd5b81516001600160a01b0381168114610139575f5ffd5b9392505050565b60805161248b6101825f395f81816103670152818161062b01528181610887015281816109bb01528181610b630152818161100801526110a9015261248b5ff3fe608060405234801561000f575f5ffd5b5060043610610152575f3560e01c8063018aecae1461015657806306fdde031461016b578063078dfbe714610189578063095ea7b31461019c5780631530a170146101bf57806318160ddd146101e057806323b872dd146101e85780632599b0e6146101fb5780632951f1b21461020e578063313ce567146102465780633292bacd1461026057806339509351146102735780633af32abf146102865780633af388e01461029957806344fcaec9146102ac57806348e23897146102bf5780634e71e0c8146102d257806353d6fd59146102da57806370a08231146102ed5780638da5cb5b1461031557806395d89b4114610334578063a457c2d71461033c578063a9059cbb1461034f578063c1d8d1d914610362578063c4d66de814610389578063dd62ed3e1461039c578063e291c3f9146103af578063e30c3978146103c2575b5f5ffd5b610169610164366004611d94565b6103d5565b005b610173610470565b6040516101809190611deb565b60405180910390f35b610169610197366004611e1d565b610500565b6101af6101aa366004611e63565b6105f8565b6040519015158152602001610180565b6101d26101cd366004611e8b565b610611565b604051908152602001610180565b6066546101d2565b6101af6101f6366004611f1e565b6107e2565b610169610209366004611f58565b610805565b61022161021c366004611f6f565b6108fa565b6040805193151584526001600160a01b03909216602084015290820152606001610180565b61024e6109b8565b60405160ff9091168152602001610180565b61016961026e366004611f1e565b610a3e565b6101af610281366004611e63565b610afe565b6101af610294366004611f6f565b610b1f565b6101696102a7366004611f58565b610b4c565b6101696102ba366004611e63565b610bbb565b6101d26102cd366004611e63565b610c33565b610169610d4c565b6101696102e8366004611d94565b610df4565b6101d26102fb366004611f6f565b6001600160a01b03165f9081526064602052604090205490565b5f54610327906001600160a01b031681565b6040516101809190611f88565b610173610e87565b6101af61034a366004611e63565b610e96565b6101af61035d366004611e63565b610f10565b6103277f000000000000000000000000000000000000000000000000000000000000000081565b610169610397366004611f6f565b610f1d565b6101d26103aa366004611f9c565b6111a0565b6101d26103bd366004611f6f565b6111ca565b600154610327906001600160a01b031681565b5f546001600160a01b031633146104075760405162461bcd60e51b81526004016103fe90611fcd565b60405180910390fd5b806104106111f4565b6001600160a01b0384165f8181526020928352604090819020805460ff191694151594909417909355915183151581527feb22591d10206f52ed5223e074c07e1c3fa148aaa0352001f84ba469c13edbd991015b60405180910390a25050565b60606067805461047f90612002565b80601f01602080910402602001604051908101604052809291908181526020018280546104ab90612002565b80156104f65780601f106104cd576101008083540402835291602001916104f6565b820191905f5260205f20905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b5f546001600160a01b031633146105295760405162461bcd60e51b81526004016103fe90611fcd565b81156105d7576001600160a01b0383161515806105435750805b6105875760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016103fe565b5f80546040516001600160a01b03808716939216915f5160206124165f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b5f33610605818585611218565b60019150505b92915050565b5f61061a61133b565b6106248585610c33565b90506106517f00000000000000000000000000000000000000000000000000000000000000008783611394565b81156106ae5760405163491dc51560e11b8152339063923b8a2a9061068090849088908890889060040161203a565b5f604051808303815f87803b158015610697575f5ffd5b505af11580156106a9573d5f5f3e3d5ffd5b505050505b836106b76111f4565b6001015f876001600160a01b03166001600160a01b031681526020019081526020015f205f8282546106e9919061208a565b909155506106f790506111f4565b6001600160a01b0386165f908152600191909101602052604090205461071c8661146c565b101561077e5760405162461bcd60e51b815260206004820152602b60248201527f466978656450726963655054414d4d56323a20696e73756666696369656e742060448201526a1415081c9958d95a5d995960aa1b60648201526084016103fe565b604080516001600160a01b038781168252602082018790529181018390529087169033907fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460629060600160405180910390a36107d96001609655565b95945050505050565b5f336107ef85828561147e565b6107fa8585856114f0565b506001949350505050565b61080d6111f4565b335f908152600291909101602052604090205460ff1661087a5760405162461bcd60e51b815260206004820152602260248201527f466978656450726963655054414d4d56323a204e6f742077686974656c697374604482015261195960f21b60648201526084016103fe565b61088261133b565b6108ad7f00000000000000000000000000000000000000000000000000000000000000003383611686565b6108b733826116ed565b60405181815233907fbd0c663d46f68911676b9f500d7d2a6ac0e13b575566785968f8eca902ba21c7906020015b60405180910390a26108f76001609655565b50565b5f5f5f5f6109066111f4565b6001600160a01b038087165f90815260209283526040908190208151606081018352815460ff811615158083526101009091049094169481018590526001909101549181018290529196509194509092509050826109b05760405162461bcd60e51b815260206004820152602160248201527f466978656450726963655054414d4d56323a206f7261636c65206e6f742073656044820152601d60fa1b60648201526084016103fe565b509193909250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a39919061209d565b905090565b5f546001600160a01b03163314610a675760405162461bcd60e51b81526004016103fe90611fcd565b81610a706111f4565b6001600160a01b038581165f90815260209290925260409091208054610100600160a81b031916610100939092169290920217905580610aae6111f4565b6001600160a01b038086165f818152602093909352604080842060010194909455925190851692917f56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd91a3505050565b5f33610605818585610b1083836111a0565b610b1a919061208a565b611218565b5f610b286111f4565b6001600160a01b039092165f90815260029290920160205250604090205460ff1690565b610b5461133b565b610b5e3382611799565b610b897f00000000000000000000000000000000000000000000000000000000000000003383611394565b60405181815233907fa2bd9fcfcdba69f52bcd9a520846ad4bd685b187483f53efc42d035b2ddebff0906020016108e5565b5f546001600160a01b03163314610be45760405162461bcd60e51b81526004016103fe90611fcd565b610bef823383611394565b80610bf86111f4565b6001015f846001600160a01b03166001600160a01b031681526020019081526020015f205f828254610c2a91906120bd565b90915550505050565b5f5f5f5f610c40866108fa565b9250925092508215610c9e5760405162461bcd60e51b815260206004820152602160248201527f466978656450726963655054414d4d56323a2074726164696e672070617573656044820152601960fa1b60648201526084016103fe565b5f826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610cdb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff91906120e6565b505050915050670de0b6b3a764000080610d199190612134565b82610d23836118b8565b610d2d9089612134565b610d379190612134565b610d41919061214b565b979650505050505050565b6001546001600160a01b0316338114610da75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016103fe565b5f80546040516001600160a01b03808516939216915f5160206124165f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b5f546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016103fe90611fcd565b80610e266111f4565b6001600160a01b0384165f818152600292909201602052604091829020805493151560ff1990941693909317909255517ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d9061046490841515815260200190565b60606068805461047f90612002565b5f3381610ea382866111a0565b905083811015610f035760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103fe565b6107fa8286868403611218565b5f336106058185856114f0565b600154600160a81b900460ff1615808015610f43575060018054600160a01b900460ff16105b80610f6a5750610f52306118c9565b158015610f6a575060018054600160a01b900460ff16145b610fcd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103fe565b6001805460ff60a01b1916600160a01b1790558015610ffa576001805460ff60a81b1916600160a81b1790555b611003826118d8565b61114d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015611061573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611088919081019061217e565b6040516020016110989190612222565b6040516020818303038152906040527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015611102573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611129919081019061217e565b604051602001611139919061224d565b604051602081830303815290604052611922565b611155611955565b801561119c576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b039182165f90815260656020908152604080832093909416825291909152205490565b5f6111d36111f4565b6001600160a01b039092165f90815260019290920160205250604090205490565b7fbbf04d9aae855c6bd76c8f4ba7a918994ad0d002f537323e58c83cbfe524900090565b6001600160a01b03831661127a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103fe565b6001600160a01b0382166112db5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103fe565b6001600160a01b038381165f8181526065602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60026096540361138d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103fe565b6002609655565b8015806113a957506001600160a01b03821630145b156113b357505050565b6001600160a01b038316611458575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461140a576040519150601f19603f3d011682016040523d82523d5f602084013e61140f565b606091505b50509050806114525760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016103fe565b50505050565b6105f36001600160a01b0384168383611988565b5f61060b30836119eb565b6001609655565b5f61148984846111a0565b90505f19811461145257818110156114e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103fe565b6114528484848403611218565b6001600160a01b0383166115545760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103fe565b6001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103fe565b6001600160a01b0383165f908152606460205260409020548181101561162d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103fe565b6001600160a01b038085165f8181526064602052604080822086860390559286168082529083902080548601905591515f5160206124365f395f51905f52906116799086815260200190565b60405180910390a3611452565b6001600160a01b0383166116d2578034146105f35760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016103fe565b80156105f3576105f36001600160a01b038416833084611a7e565b6001600160a01b0382166117435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103fe565b8060665f828254611754919061208a565b90915550506001600160a01b0382165f818152606460209081526040808320805486019055518481525f5160206124365f395f51905f52910160405180910390a35050565b6001600160a01b0382166117f95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103fe565b6001600160a01b0382165f908152606460205260409020548181101561186c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103fe565b6001600160a01b0383165f8181526064602090815260408083208686039055606680548790039055518581529192915f5160206124365f395f51905f52910160405180910390a3505050565b5f5f8212156118c5575f5ffd5b5090565b6001600160a01b03163b151590565b600154600160a81b900460ff166119015760405162461bcd60e51b81526004016103fe90612278565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b600154600160a81b900460ff1661194b5760405162461bcd60e51b81526004016103fe90612278565b61119c8282611ab6565b600154600160a81b900460ff1661197e5760405162461bcd60e51b81526004016103fe90612278565b611986611af8565b565b6040516001600160a01b0383166024820152604481018290526105f390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611b21565b5f6001600160a01b03821615611a6b576040516370a0823160e01b81526001600160a01b038316906370a0823190611a27908690600401611f88565b602060405180830381865afa158015611a42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6691906122c3565b611a77565b826001600160a01b0316315b9392505050565b6040516001600160a01b03808516602483015283166044820152606481018290526114529085906323b872dd60e01b906084016119b4565b600154600160a81b900460ff16611adf5760405162461bcd60e51b81526004016103fe90612278565b6067611aeb8382612325565b5060686105f38282612325565b600154600160a81b900460ff166114775760405162461bcd60e51b81526004016103fe90612278565b5f611b75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611bf49092919063ffffffff16565b905080515f1480611b95575080806020019051810190611b9591906123df565b6105f35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103fe565b6060611c0284845f85611c0a565b949350505050565b606082471015611c6b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103fe565b5f5f866001600160a01b03168587604051611c8691906123fa565b5f6040518083038185875af1925050503d805f8114611cc0576040519150601f19603f3d011682016040523d82523d5f602084013e611cc5565b606091505b5091509150610d418783838760608315611d3d5782515f03611d3657611cea856118c9565b611d365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103fe565b5081611c02565b611c028383815115611d525781518083602001fd5b8060405162461bcd60e51b81526004016103fe9190611deb565b80356001600160a01b0381168114611d82575f5ffd5b919050565b80151581146108f7575f5ffd5b5f5f60408385031215611da5575f5ffd5b611dae83611d6c565b91506020830135611dbe81611d87565b809150509250929050565b5f5b83811015611de3578181015183820152602001611dcb565b50505f910152565b602081525f8251806020840152611e09816040850160208701611dc9565b601f01601f19169190910160400192915050565b5f5f5f60608486031215611e2f575f5ffd5b611e3884611d6c565b92506020840135611e4881611d87565b91506040840135611e5881611d87565b809150509250925092565b5f5f60408385031215611e74575f5ffd5b611e7d83611d6c565b946020939093013593505050565b5f5f5f5f5f60808688031215611e9f575f5ffd5b611ea886611d6c565b9450611eb660208701611d6c565b93506040860135925060608601356001600160401b03811115611ed7575f5ffd5b8601601f81018813611ee7575f5ffd5b80356001600160401b03811115611efc575f5ffd5b886020828401011115611f0d575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215611f30575f5ffd5b611f3984611d6c565b9250611f4760208501611d6c565b929592945050506040919091013590565b5f60208284031215611f68575f5ffd5b5035919050565b5f60208284031215611f7f575f5ffd5b611a7782611d6c565b6001600160a01b0391909116815260200190565b5f5f60408385031215611fad575f5ffd5b611fb683611d6c565b9150611fc460208401611d6c565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061201657607f821691505b60208210810361203457634e487b7160e01b5f52602260045260245ffd5b50919050565b84815283602082015260606040820152816060820152818360808301375f818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561060b5761060b612076565b5f602082840312156120ad575f5ffd5b815160ff81168114611a77575f5ffd5b8181038181111561060b5761060b612076565b80516001600160501b0381168114611d82575f5ffd5b5f5f5f5f5f60a086880312156120fa575f5ffd5b612103866120d0565b60208701516040880151606089015192975090955093509150612128608087016120d0565b90509295509295909350565b808202811582820484141761060b5761060b612076565b5f8261216557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561218e575f5ffd5b81516001600160401b038111156121a3575f5ffd5b8201601f810184136121b3575f5ffd5b80516001600160401b038111156121cc576121cc61216a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156121fa576121fa61216a565b604052818152828201602001861015612211575f5ffd5b6107d9826020830160208601611dc9565b5f8251612233818460208701611dc9565b67081c9958d95a5c1d60c21b920191825250600801919050565b5f825161225e818460208701611dc9565b670b5c9958d95a5c1d60c21b920191825250600801919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156122d3575f5ffd5b5051919050565b601f8211156105f357805f5260205f20601f840160051c810160208510156122ff5750805b601f840160051c820191505b8181101561231e575f815560010161230b565b5050505050565b81516001600160401b0381111561233e5761233e61216a565b6123528161234c8454612002565b846122da565b6020601f821160018114612384575f831561236d5750848201515b5f19600385901b1c1916600184901b17845561231e565b5f84815260208120601f198516915b828110156123b35787850151825560209485019460019092019101612393565b50848210156123d057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156123ef575f5ffd5b8151611a7781611d87565b5f825161240b818460208701611dc9565b919091019291505056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cd8f7c39c15587bb754cd79b0ad2a77c5bc84dcc9300886ee5db6bb3c261b0a464736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610152575f3560e01c8063018aecae1461015657806306fdde031461016b578063078dfbe714610189578063095ea7b31461019c5780631530a170146101bf57806318160ddd146101e057806323b872dd146101e85780632599b0e6146101fb5780632951f1b21461020e578063313ce567146102465780633292bacd1461026057806339509351146102735780633af32abf146102865780633af388e01461029957806344fcaec9146102ac57806348e23897146102bf5780634e71e0c8146102d257806353d6fd59146102da57806370a08231146102ed5780638da5cb5b1461031557806395d89b4114610334578063a457c2d71461033c578063a9059cbb1461034f578063c1d8d1d914610362578063c4d66de814610389578063dd62ed3e1461039c578063e291c3f9146103af578063e30c3978146103c2575b5f5ffd5b610169610164366004611d94565b6103d5565b005b610173610470565b6040516101809190611deb565b60405180910390f35b610169610197366004611e1d565b610500565b6101af6101aa366004611e63565b6105f8565b6040519015158152602001610180565b6101d26101cd366004611e8b565b610611565b604051908152602001610180565b6066546101d2565b6101af6101f6366004611f1e565b6107e2565b610169610209366004611f58565b610805565b61022161021c366004611f6f565b6108fa565b6040805193151584526001600160a01b03909216602084015290820152606001610180565b61024e6109b8565b60405160ff9091168152602001610180565b61016961026e366004611f1e565b610a3e565b6101af610281366004611e63565b610afe565b6101af610294366004611f6f565b610b1f565b6101696102a7366004611f58565b610b4c565b6101696102ba366004611e63565b610bbb565b6101d26102cd366004611e63565b610c33565b610169610d4c565b6101696102e8366004611d94565b610df4565b6101d26102fb366004611f6f565b6001600160a01b03165f9081526064602052604090205490565b5f54610327906001600160a01b031681565b6040516101809190611f88565b610173610e87565b6101af61034a366004611e63565b610e96565b6101af61035d366004611e63565b610f10565b6103277f000000000000000000000000000000000000000000000000000000000000000081565b610169610397366004611f6f565b610f1d565b6101d26103aa366004611f9c565b6111a0565b6101d26103bd366004611f6f565b6111ca565b600154610327906001600160a01b031681565b5f546001600160a01b031633146104075760405162461bcd60e51b81526004016103fe90611fcd565b60405180910390fd5b806104106111f4565b6001600160a01b0384165f8181526020928352604090819020805460ff191694151594909417909355915183151581527feb22591d10206f52ed5223e074c07e1c3fa148aaa0352001f84ba469c13edbd991015b60405180910390a25050565b60606067805461047f90612002565b80601f01602080910402602001604051908101604052809291908181526020018280546104ab90612002565b80156104f65780601f106104cd576101008083540402835291602001916104f6565b820191905f5260205f20905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b5f546001600160a01b031633146105295760405162461bcd60e51b81526004016103fe90611fcd565b81156105d7576001600160a01b0383161515806105435750805b6105875760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016103fe565b5f80546040516001600160a01b03808716939216915f5160206124165f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b5f33610605818585611218565b60019150505b92915050565b5f61061a61133b565b6106248585610c33565b90506106517f00000000000000000000000000000000000000000000000000000000000000008783611394565b81156106ae5760405163491dc51560e11b8152339063923b8a2a9061068090849088908890889060040161203a565b5f604051808303815f87803b158015610697575f5ffd5b505af11580156106a9573d5f5f3e3d5ffd5b505050505b836106b76111f4565b6001015f876001600160a01b03166001600160a01b031681526020019081526020015f205f8282546106e9919061208a565b909155506106f790506111f4565b6001600160a01b0386165f908152600191909101602052604090205461071c8661146c565b101561077e5760405162461bcd60e51b815260206004820152602b60248201527f466978656450726963655054414d4d56323a20696e73756666696369656e742060448201526a1415081c9958d95a5d995960aa1b60648201526084016103fe565b604080516001600160a01b038781168252602082018790529181018390529087169033907fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460629060600160405180910390a36107d96001609655565b95945050505050565b5f336107ef85828561147e565b6107fa8585856114f0565b506001949350505050565b61080d6111f4565b335f908152600291909101602052604090205460ff1661087a5760405162461bcd60e51b815260206004820152602260248201527f466978656450726963655054414d4d56323a204e6f742077686974656c697374604482015261195960f21b60648201526084016103fe565b61088261133b565b6108ad7f00000000000000000000000000000000000000000000000000000000000000003383611686565b6108b733826116ed565b60405181815233907fbd0c663d46f68911676b9f500d7d2a6ac0e13b575566785968f8eca902ba21c7906020015b60405180910390a26108f76001609655565b50565b5f5f5f5f6109066111f4565b6001600160a01b038087165f90815260209283526040908190208151606081018352815460ff811615158083526101009091049094169481018590526001909101549181018290529196509194509092509050826109b05760405162461bcd60e51b815260206004820152602160248201527f466978656450726963655054414d4d56323a206f7261636c65206e6f742073656044820152601d60fa1b60648201526084016103fe565b509193909250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a39919061209d565b905090565b5f546001600160a01b03163314610a675760405162461bcd60e51b81526004016103fe90611fcd565b81610a706111f4565b6001600160a01b038581165f90815260209290925260409091208054610100600160a81b031916610100939092169290920217905580610aae6111f4565b6001600160a01b038086165f818152602093909352604080842060010194909455925190851692917f56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd91a3505050565b5f33610605818585610b1083836111a0565b610b1a919061208a565b611218565b5f610b286111f4565b6001600160a01b039092165f90815260029290920160205250604090205460ff1690565b610b5461133b565b610b5e3382611799565b610b897f00000000000000000000000000000000000000000000000000000000000000003383611394565b60405181815233907fa2bd9fcfcdba69f52bcd9a520846ad4bd685b187483f53efc42d035b2ddebff0906020016108e5565b5f546001600160a01b03163314610be45760405162461bcd60e51b81526004016103fe90611fcd565b610bef823383611394565b80610bf86111f4565b6001015f846001600160a01b03166001600160a01b031681526020019081526020015f205f828254610c2a91906120bd565b90915550505050565b5f5f5f5f610c40866108fa565b9250925092508215610c9e5760405162461bcd60e51b815260206004820152602160248201527f466978656450726963655054414d4d56323a2074726164696e672070617573656044820152601960fa1b60648201526084016103fe565b5f826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610cdb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff91906120e6565b505050915050670de0b6b3a764000080610d199190612134565b82610d23836118b8565b610d2d9089612134565b610d379190612134565b610d41919061214b565b979650505050505050565b6001546001600160a01b0316338114610da75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016103fe565b5f80546040516001600160a01b03808516939216915f5160206124165f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b5f546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016103fe90611fcd565b80610e266111f4565b6001600160a01b0384165f818152600292909201602052604091829020805493151560ff1990941693909317909255517ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d9061046490841515815260200190565b60606068805461047f90612002565b5f3381610ea382866111a0565b905083811015610f035760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103fe565b6107fa8286868403611218565b5f336106058185856114f0565b600154600160a81b900460ff1615808015610f43575060018054600160a01b900460ff16105b80610f6a5750610f52306118c9565b158015610f6a575060018054600160a01b900460ff16145b610fcd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103fe565b6001805460ff60a01b1916600160a01b1790558015610ffa576001805460ff60a81b1916600160a81b1790555b611003826118d8565b61114d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015611061573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611088919081019061217e565b6040516020016110989190612222565b6040516020818303038152906040527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015611102573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611129919081019061217e565b604051602001611139919061224d565b604051602081830303815290604052611922565b611155611955565b801561119c576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b039182165f90815260656020908152604080832093909416825291909152205490565b5f6111d36111f4565b6001600160a01b039092165f90815260019290920160205250604090205490565b7fbbf04d9aae855c6bd76c8f4ba7a918994ad0d002f537323e58c83cbfe524900090565b6001600160a01b03831661127a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103fe565b6001600160a01b0382166112db5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103fe565b6001600160a01b038381165f8181526065602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60026096540361138d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103fe565b6002609655565b8015806113a957506001600160a01b03821630145b156113b357505050565b6001600160a01b038316611458575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461140a576040519150601f19603f3d011682016040523d82523d5f602084013e61140f565b606091505b50509050806114525760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016103fe565b50505050565b6105f36001600160a01b0384168383611988565b5f61060b30836119eb565b6001609655565b5f61148984846111a0565b90505f19811461145257818110156114e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103fe565b6114528484848403611218565b6001600160a01b0383166115545760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103fe565b6001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103fe565b6001600160a01b0383165f908152606460205260409020548181101561162d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103fe565b6001600160a01b038085165f8181526064602052604080822086860390559286168082529083902080548601905591515f5160206124365f395f51905f52906116799086815260200190565b60405180910390a3611452565b6001600160a01b0383166116d2578034146105f35760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016103fe565b80156105f3576105f36001600160a01b038416833084611a7e565b6001600160a01b0382166117435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103fe565b8060665f828254611754919061208a565b90915550506001600160a01b0382165f818152606460209081526040808320805486019055518481525f5160206124365f395f51905f52910160405180910390a35050565b6001600160a01b0382166117f95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103fe565b6001600160a01b0382165f908152606460205260409020548181101561186c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103fe565b6001600160a01b0383165f8181526064602090815260408083208686039055606680548790039055518581529192915f5160206124365f395f51905f52910160405180910390a3505050565b5f5f8212156118c5575f5ffd5b5090565b6001600160a01b03163b151590565b600154600160a81b900460ff166119015760405162461bcd60e51b81526004016103fe90612278565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b600154600160a81b900460ff1661194b5760405162461bcd60e51b81526004016103fe90612278565b61119c8282611ab6565b600154600160a81b900460ff1661197e5760405162461bcd60e51b81526004016103fe90612278565b611986611af8565b565b6040516001600160a01b0383166024820152604481018290526105f390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611b21565b5f6001600160a01b03821615611a6b576040516370a0823160e01b81526001600160a01b038316906370a0823190611a27908690600401611f88565b602060405180830381865afa158015611a42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6691906122c3565b611a77565b826001600160a01b0316315b9392505050565b6040516001600160a01b03808516602483015283166044820152606481018290526114529085906323b872dd60e01b906084016119b4565b600154600160a81b900460ff16611adf5760405162461bcd60e51b81526004016103fe90612278565b6067611aeb8382612325565b5060686105f38282612325565b600154600160a81b900460ff166114775760405162461bcd60e51b81526004016103fe90612278565b5f611b75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611bf49092919063ffffffff16565b905080515f1480611b95575080806020019051810190611b9591906123df565b6105f35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103fe565b6060611c0284845f85611c0a565b949350505050565b606082471015611c6b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103fe565b5f5f866001600160a01b03168587604051611c8691906123fa565b5f6040518083038185875af1925050503d805f8114611cc0576040519150601f19603f3d011682016040523d82523d5f602084013e611cc5565b606091505b5091509150610d418783838760608315611d3d5782515f03611d3657611cea856118c9565b611d365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103fe565b5081611c02565b611c028383815115611d525781518083602001fd5b8060405162461bcd60e51b81526004016103fe9190611deb565b80356001600160a01b0381168114611d82575f5ffd5b919050565b80151581146108f7575f5ffd5b5f5f60408385031215611da5575f5ffd5b611dae83611d6c565b91506020830135611dbe81611d87565b809150509250929050565b5f5b83811015611de3578181015183820152602001611dcb565b50505f910152565b602081525f8251806020840152611e09816040850160208701611dc9565b601f01601f19169190910160400192915050565b5f5f5f60608486031215611e2f575f5ffd5b611e3884611d6c565b92506020840135611e4881611d87565b91506040840135611e5881611d87565b809150509250925092565b5f5f60408385031215611e74575f5ffd5b611e7d83611d6c565b946020939093013593505050565b5f5f5f5f5f60808688031215611e9f575f5ffd5b611ea886611d6c565b9450611eb660208701611d6c565b93506040860135925060608601356001600160401b03811115611ed7575f5ffd5b8601601f81018813611ee7575f5ffd5b80356001600160401b03811115611efc575f5ffd5b886020828401011115611f0d575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215611f30575f5ffd5b611f3984611d6c565b9250611f4760208501611d6c565b929592945050506040919091013590565b5f60208284031215611f68575f5ffd5b5035919050565b5f60208284031215611f7f575f5ffd5b611a7782611d6c565b6001600160a01b0391909116815260200190565b5f5f60408385031215611fad575f5ffd5b611fb683611d6c565b9150611fc460208401611d6c565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061201657607f821691505b60208210810361203457634e487b7160e01b5f52602260045260245ffd5b50919050565b84815283602082015260606040820152816060820152818360808301375f818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561060b5761060b612076565b5f602082840312156120ad575f5ffd5b815160ff81168114611a77575f5ffd5b8181038181111561060b5761060b612076565b80516001600160501b0381168114611d82575f5ffd5b5f5f5f5f5f60a086880312156120fa575f5ffd5b612103866120d0565b60208701516040880151606089015192975090955093509150612128608087016120d0565b90509295509295909350565b808202811582820484141761060b5761060b612076565b5f8261216557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561218e575f5ffd5b81516001600160401b038111156121a3575f5ffd5b8201601f810184136121b3575f5ffd5b80516001600160401b038111156121cc576121cc61216a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156121fa576121fa61216a565b604052818152828201602001861015612211575f5ffd5b6107d9826020830160208601611dc9565b5f8251612233818460208701611dc9565b67081c9958d95a5c1d60c21b920191825250600801919050565b5f825161225e818460208701611dc9565b670b5c9958d95a5c1d60c21b920191825250600801919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156122d3575f5ffd5b5051919050565b601f8211156105f357805f5260205f20601f840160051c810160208510156122ff5750805b601f840160051c820191505b8181101561231e575f815560010161230b565b5050505050565b81516001600160401b0381111561233e5761233e61216a565b6123528161234c8454612002565b846122da565b6020601f821160018114612384575f831561236d5750848201515b5f19600385901b1c1916600184901b17845561231e565b5f84815260208120601f198516915b828110156123b35787850151825560209485019460019092019101612393565b50848210156123d057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156123ef575f5ffd5b8151611a7781611d87565b5f825161240b818460208701611dc9565b919091019291505056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cd8f7c39c15587bb754cd79b0ad2a77c5bc84dcc9300886ee5db6bb3c261b0a464736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
