[ { "inputs": [ { "internalType": "uint256", "name": "_mintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "_traverseFee", "type": "uint256" }, { "internalType": "address", "name": "_lzEndpoint", "type": "address" }, { "internalType": "uint256", "name": "_offset", "type": "uint256" }, { "internalType": "uint256", "name": "_supply", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "MessageFailed", "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": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": true, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": true, "internalType": "address", "name": "_toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" } ], "name": "ReceiveFromChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_sender", "type": "address" }, { "indexed": true, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": true, "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" } ], "name": "SendToChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address[]", "name": "_address", "type": "address[]" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "addWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseProofURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" } ], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "zroFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "name": "failedMessages", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "forceResumeReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" } ], "name": "getConfig", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isSaleLive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "isTrustedRemote", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lzEndpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpoint", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "nonblockingLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "proofURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "removeWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "retryMessage", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "royaltyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "saleStartTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "sendFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_string", "type": "string" } ], "name": "setBaseProofURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_string", "type": "string" } ], "name": "setBaseTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" }, { "internalType": "bytes", "name": "_config", "type": "bytes" } ], "name": "setConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_string", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setReceiveVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "setRoyaltyAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "setRoyaltyAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_timestamp", "type": "uint256" } ], "name": "setSaleStartTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setSendVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16[]", "name": "_srcChainId", "type": "uint16[]" }, { "internalType": "bytes[]", "name": "_srcAddress", "type": "bytes[]" } ], "name": "setTrustedRemote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_timestamp", "type": "uint256" } ], "name": "setWhitelistEndTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMint", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "trustedRemoteLookup", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelist", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistEndTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
610100604052636283fec0600c556362855040600d556103e8600e553480156200002857600080fd5b50604051620065853803806200658583398181016040528101906200004e91906200041d565b82846040518060400160405280600881526020017f54696e79426f79730000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54424f5900000000000000000000000000000000000000000000000000000000815250858585858181620000e2620000d6620001d360201b60201c565b620001db60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505080608081815250505050505083600390805190602001906200013a929190620002c8565b50826004908051906020019062000153929190620002c8565b508160e081815250508060c081815250508060068190555050505050505084601081905550620001886200029f60201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506200050a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002d690620004d4565b90600052602060002090601f016020900481019282620002fa576000855562000346565b82601f106200031557805160ff191683800117855562000346565b8280016001018555821562000346579182015b828111156200034557825182559160200191906001019062000328565b5b50905062000355919062000359565b5090565b5b80821115620003745760008160009055506001016200035a565b5090565b600080fd5b6000819050919050565b62000392816200037d565b81146200039e57600080fd5b50565b600081519050620003b28162000387565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003e582620003b8565b9050919050565b620003f781620003d8565b81146200040357600080fd5b50565b6000815190506200041781620003ec565b92915050565b600080600080600060a086880312156200043c576200043b62000378565b5b60006200044c88828901620003a1565b95505060206200045f88828901620003a1565b9450506040620004728882890162000406565b93505060606200048588828901620003a1565b92505060806200049888828901620003a1565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004ed57607f821691505b60208210811415620005045762000503620004a5565b5b50919050565b60805160a05160c05160e051615ffb6200058a6000396000613120015260008181611d5701526120d1015260008181610e060152818161118f0152818161139a0152818161157e01528181611999015281816123ca0152818161259501528181612ae4015281816134ec0152613ca901526000613ce50152615ffb6000f3fe60806040526004361061038b5760003560e01c80636352211e116101dc578063ad2f852a11610102578063d49482e1116100a0578063f2fde38b1161006f578063f2fde38b14610d4a578063f4a0a52814610d73578063f5ecbdbc14610d9c578063f71143ca14610dd95761038b565b8063d49482e114610c8e578063d547cfb714610cb7578063e8a3d48514610ce2578063e985e9c514610d0d5761038b565b8063b88d4fde116100dc578063b88d4fde14610be3578063c87b56dd14610c0c578063cbed8b9c14610c49578063d1deba1f14610c725761038b565b8063ad2f852a14610b62578063b353aaa714610b8d578063b4e38ae114610bb85761038b565b80637533d7881161017a578063938e3d7b11610149578063938e3d7b14610aa857806395d89b4114610ad15780639b19251a14610afc578063a22cb46514610b395761038b565b80637533d788146109ec57806378c8cda714610a295780637c6e551d14610a525780638da5cb5b14610a7d5761038b565b80636817c76c116101b65780636817c76c1461094257806370a082311461096d578063715018a6146109aa5780637501f741146109c15761038b565b80636352211e146108b3578063645b6701146108f057806366ad5c8a146109195761038b565b80632a55205a116102c157806342d65a8d1161025f578063519056361161022e578063519056361461080657806351cff8d91461082257806359a7715a1461084b5780635b8c41e6146108765761038b565b806342d65a8d146107625780634a0c78b51461078b5780634db40561146107b45780634f07de09146107dd5761038b565b80633d8b38f61161029b5780633d8b38f6146106b75780633db82fb5146106f457806340c10f191461071d57806342842e0e146107395761038b565b80632a55205a1461062557806330176e13146106635780633c276d861461068c5761038b565b80630c2cd50c1161032e57806318160ddd1161030857806318160ddd1461056a5780631e83409a1461059557806323b872dd146105be5780632a205e3d146105e75761038b565b80630c2cd50c146104d957806310ddb13714610504578063125804d41461052d5761038b565b806306fdde031161036a57806306fdde031461041f57806307e0db171461044a578063081812fc14610473578063095ea7b3146104b05761038b565b80621d35671461039057806301ffc9a7146103b957806306d254da146103f6575b600080fd5b34801561039c57600080fd5b506103b760048036038101906103b2919061452c565b610e04565b005b3480156103c557600080fd5b506103e060048036038101906103db9190614623565b610f45565b6040516103ed919061466b565b60405180910390f35b34801561040257600080fd5b5061041d600480360381019061041891906146e4565b610fbf565b005b34801561042b57600080fd5b5061043461107f565b6040516104419190614799565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c91906147bb565b611111565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061481e565b61121b565b6040516104a7919061485a565b60405180910390f35b3480156104bc57600080fd5b506104d760048036038101906104d29190614875565b61126a565b005b3480156104e557600080fd5b506104ee611316565b6040516104fb91906148c4565b60405180910390f35b34801561051057600080fd5b5061052b600480360381019061052691906147bb565b61131c565b005b34801561053957600080fd5b50610554600480360381019061054f919061481e565b611426565b6040516105619190614799565b60405180910390f35b34801561057657600080fd5b5061057f611486565b60405161058c91906148c4565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b791906146e4565b6114a2565b005b3480156105ca57600080fd5b506105e560048036038101906105e091906148df565b611529565b005b3480156105f357600080fd5b5061060e6004803603810190610609919061495e565b611553565b60405161061c929190614a11565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190614a3a565b61163b565b60405161065a929190614a7a565b60405180910390f35b34801561066f57600080fd5b5061068a60048036038101906106859190614b44565b611687565b005b34801561069857600080fd5b506106a161171d565b6040516106ae91906148c4565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190614bed565b611723565b6040516106eb919061466b565b60405180910390f35b34801561070057600080fd5b5061071b6004803603810190610716919061481e565b6117f7565b005b61073760048036038101906107329190614875565b61188f565b005b34801561074557600080fd5b50610760600480360381019061075b91906148df565b6118fb565b005b34801561076e57600080fd5b5061078960048036038101906107849190614bed565b61191b565b005b34801561079757600080fd5b506107b260048036038101906107ad9190614cf9565b611a2b565b005b3480156107c057600080fd5b506107db60048036038101906107d69190614b44565b611b44565b005b3480156107e957600080fd5b5061080460048036038101906107ff919061481e565b611bec565b005b610820600480360381019061081b9190614db8565b611c72565b005b34801561082e57600080fd5b50610849600480360381019061084491906146e4565b611c8a565b005b34801561085757600080fd5b50610860611d50565b60405161086d91906148c4565b60405180910390f35b34801561088257600080fd5b5061089d60048036038101906108989190614e92565b611d85565b6040516108aa9190614f1a565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d5919061481e565b611dcd565b6040516108e7919061485a565b60405180910390f35b3480156108fc57600080fd5b5061091760048036038101906109129190614ff8565b611e49565b005b34801561092557600080fd5b50610940600480360381019061093b919061452c565b611f6c565b005b34801561094e57600080fd5b50610957611fbd565b60405161096491906148c4565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f91906146e4565b611fc3565b6040516109a191906148c4565b60405180910390f35b3480156109b657600080fd5b506109bf612045565b005b3480156109cd57600080fd5b506109d66120cd565b6040516109e391906148c4565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e91906147bb565b6120f5565b604051610a2091906150a9565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b91906146e4565b612195565b005b348015610a5e57600080fd5b50610a6761221d565b604051610a7491906148c4565b60405180910390f35b348015610a8957600080fd5b50610a92612223565b604051610a9f919061485a565b60405180910390f35b348015610ab457600080fd5b50610acf6004803603810190610aca9190614b44565b61224c565b005b348015610add57600080fd5b50610ae66122e2565b604051610af39190614799565b60405180910390f35b348015610b0857600080fd5b50610b236004803603810190610b1e91906146e4565b612374565b604051610b3091906148c4565b60405180910390f35b348015610b4557600080fd5b50610b606004803603810190610b5b91906150cb565b61238c565b005b348015610b6e57600080fd5b50610b776123a2565b604051610b84919061485a565b60405180910390f35b348015610b9957600080fd5b50610ba26123c8565b604051610baf919061516a565b60405180910390f35b348015610bc457600080fd5b50610bcd6123ec565b604051610bda9190614799565b60405180910390f35b348015610bef57600080fd5b50610c0a6004803603810190610c059190615185565b61247a565b005b348015610c1857600080fd5b50610c336004803603810190610c2e919061481e565b6124a6565b604051610c409190614799565b60405180910390f35b348015610c5557600080fd5b50610c706004803603810190610c6b9190615208565b612517565b005b610c8c6004803603810190610c87919061452c565b61262d565b005b348015610c9a57600080fd5b50610cb56004803603810190610cb0919061481e565b612728565b005b348015610cc357600080fd5b50610ccc6127ae565b604051610cd99190614799565b60405180910390f35b348015610cee57600080fd5b50610cf761283c565b604051610d049190614799565b60405180910390f35b348015610d1957600080fd5b50610d346004803603810190610d2f9190615290565b6128ce565b604051610d41919061466b565b60405180910390f35b348015610d5657600080fd5b50610d716004803603810190610d6c91906146e4565b612962565b005b348015610d7f57600080fd5b50610d9a6004803603810190610d95919061481e565b612a5a565b005b348015610da857600080fd5b50610dc36004803603810190610dbe91906152d0565b612ae0565b604051610dd091906150a9565b60405180910390f35b348015610de557600080fd5b50610dee612ba0565b604051610dfb919061466b565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e43612bad565b73ffffffffffffffffffffffffffffffffffffffff1614610e6357600080fd5b6000600160008661ffff1661ffff1681526020019081526020016000208054610e8b90615366565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb790615366565b8015610f045780601f10610ed957610100808354040283529160200191610f04565b820191906000526020600020905b815481529060010190602001808311610ee757829003601f168201915b5050505050905080518451148015610f29575080805190602001208480519060200120145b610f3257600080fd5b610f3e85858585612bb5565b5050505050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fb85750610fb782612cd4565b5b9050919050565b610fc7612bad565b73ffffffffffffffffffffffffffffffffffffffff16610fe5612223565b73ffffffffffffffffffffffffffffffffffffffff161461103b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611032906153e4565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461108e90615366565b80601f01602080910402602001604051908101604052809291908181526020018280546110ba90615366565b80156111075780601f106110dc57610100808354040283529160200191611107565b820191906000526020600020905b8154815290600101906020018083116110ea57829003601f168201915b5050505050905090565b611119612bad565b73ffffffffffffffffffffffffffffffffffffffff16611137612223565b73ffffffffffffffffffffffffffffffffffffffff161461118d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611184906153e4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166307e0db17826040518263ffffffff1660e01b81526004016111e69190615413565b600060405180830381600087803b15801561120057600080fd5b505af1158015611214573d6000803e3d6000fd5b5050505050565b600061122682612d4e565b61122f57600080fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061127582611dcd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112b057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166112cf612bad565b73ffffffffffffffffffffffffffffffffffffffff1614806112fe57506112fd816112f8612bad565b6128ce565b5b61130757600080fd5b6113118383612dba565b505050565b600d5481565b611324612bad565b73ffffffffffffffffffffffffffffffffffffffff16611342612223565b73ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f906153e4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166310ddb137826040518263ffffffff1660e01b81526004016113f19190615413565b600060405180830381600087803b15801561140b57600080fd5b505af115801561141f573d6000803e3d6000fd5b5050505050565b606060006011805461143790615366565b905011611453576040518060200160405280600081525061147f565b601161145e83612e73565b60405160200161146f9291906154fe565b6040516020818303038152906040525b9050919050565b6000600754611493611d50565b61149d919061555b565b905090565b6114aa612ba0565b6114b357600080fd5b6000601460006114c1612bad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811161150b57600080fd5b61151b611516612bad565b612fd4565b6115258282613074565b5050565b61153a611534612bad565b826131d0565b61154357600080fd5b61154e838383613278565b505050565b6000806000868660405160200161156b9291906155ef565b60405160208183030381529060405290507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340a7bb1089308489896040518663ffffffff1660e01b81526004016115dd95949392919061561f565b604080518083038186803b1580156115f457600080fd5b505afa158015611608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162c9190615695565b92509250509550959350505050565b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612710600e548561167291906156d5565b61167c919061575e565b915091509250929050565b61168f612bad565b73ffffffffffffffffffffffffffffffffffffffff166116ad612223565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa906153e4565b60405180910390fd5b806012908051906020019061171992919061422f565b5050565b600c5481565b600080600160008661ffff1661ffff168152602001908152602001600020805461174c90615366565b80601f016020809104026020016040519081016040528092919081815260200182805461177890615366565b80156117c55780601f1061179a576101008083540402835291602001916117c5565b820191906000526020600020905b8154815290600101906020018083116117a857829003601f168201915b5050505050905083836040516117dc9291906157bf565b60405180910390208180519060200120149150509392505050565b6117ff612bad565b73ffffffffffffffffffffffffffffffffffffffff1661181d612223565b73ffffffffffffffffffffffffffffffffffffffff1614611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906153e4565b60405180910390fd5b61187b612ba0565b1561188557600080fd5b80600c8190555050565b611897612ba0565b6118a057600080fd5b806010546118ae91906156d5565b34146118b957600080fd5b600a8111156118c757600080fd5b6118cf613473565b6118d7611d50565b826118e291906157d8565b11156118ed57600080fd5b6118f78282613074565b5050565b6119168383836040518060200160405280600081525061247a565b505050565b611923612bad565b73ffffffffffffffffffffffffffffffffffffffff16611941612223565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e906153e4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342d65a8d8484846040518463ffffffff1660e01b81526004016119f49392919061585b565b600060405180830381600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b50505050505050565b611a33612bad565b73ffffffffffffffffffffffffffffffffffffffff16611a51612223565b73ffffffffffffffffffffffffffffffffffffffff1614611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906153e4565b60405180910390fd5b60005b84849050811015611b3d57828282818110611ac857611ac761588d565b5b9050602002810190611ada91906158cb565b60016000888886818110611af157611af061588d565b5b9050602002016020810190611b0691906147bb565b61ffff1661ffff1681526020019081526020016000209190611b299291906142b5565b508080611b359061592e565b915050611aaa565b5050505050565b611b4c612bad565b73ffffffffffffffffffffffffffffffffffffffff16611b6a612223565b73ffffffffffffffffffffffffffffffffffffffff1614611bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb7906153e4565b60405180910390fd5b611bc8612ba0565b15611bd257600080fd5b8060119080519060200190611be892919061422f565b5050565b611bf4612bad565b73ffffffffffffffffffffffffffffffffffffffff16611c12612223565b73ffffffffffffffffffffffffffffffffffffffff1614611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f906153e4565b60405180910390fd5b80600e8190555050565b611c81878787878787876134a9565b50505050505050565b611c92612bad565b73ffffffffffffffffffffffffffffffffffffffff16611cb0612223565b73ffffffffffffffffffffffffffffffffffffffff1614611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd906153e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611d4c573d6000803e3d6000fd5b5050565b60006006547f0000000000000000000000000000000000000000000000000000000000000000611d809190615977565b905090565b60026020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050505481565b6000806008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e4057600080fd5b80915050919050565b611e51612bad565b73ffffffffffffffffffffffffffffffffffffffff16611e6f612223565b73ffffffffffffffffffffffffffffffffffffffff1614611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc906153e4565b60405180910390fd5b60005b8251811015611f42578160146000858481518110611ee957611ee861588d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611f3a9061592e565b915050611ec8565b50808251611f5091906156d5565b60156000828254611f6191906157d8565b925050819055505050565b3073ffffffffffffffffffffffffffffffffffffffff16611f8b612bad565b73ffffffffffffffffffffffffffffffffffffffff1614611fab57600080fd5b611fb78484848461360d565b50505050565b60105481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ffe57600080fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61204d612bad565b73ffffffffffffffffffffffffffffffffffffffff1661206b612223565b73ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b8906153e4565b60405180910390fd5b6120cb60006136b0565b565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6001602052806000526040600020600091509050805461211490615366565b80601f016020809104026020016040519081016040528092919081815260200182805461214090615366565b801561218d5780601f106121625761010080835404028352916020019161218d565b820191906000526020600020905b81548152906001019060200180831161217057829003601f168201915b505050505081565b61219d612bad565b73ffffffffffffffffffffffffffffffffffffffff166121bb612223565b73ffffffffffffffffffffffffffffffffffffffff1614612211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612208906153e4565b60405180910390fd5b61221a81612fd4565b50565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612254612bad565b73ffffffffffffffffffffffffffffffffffffffff16612272612223565b73ffffffffffffffffffffffffffffffffffffffff16146122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf906153e4565b60405180910390fd5b80601390805190602001906122de92919061422f565b5050565b6060600480546122f190615366565b80601f016020809104026020016040519081016040528092919081815260200182805461231d90615366565b801561236a5780601f1061233f5761010080835404028352916020019161236a565b820191906000526020600020905b81548152906001019060200180831161234d57829003601f168201915b5050505050905090565b60146020528060005260406000206000915090505481565b61239e612397612bad565b8383613774565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b601180546123f990615366565b80601f016020809104026020016040519081016040528092919081815260200182805461242590615366565b80156124725780601f1061244757610100808354040283529160200191612472565b820191906000526020600020905b81548152906001019060200180831161245557829003601f168201915b505050505081565b61248b612485612bad565b836131d0565b61249457600080fd5b6124a0848484846138ab565b50505050565b60606124b182612d4e565b6124ba57600080fd5b60006124c46138d1565b905060008151116124e4576040518060200160405280600081525061250f565b806124ee84612e73565b6040516020016124ff9291906159ab565b6040516020818303038152906040525b915050919050565b61251f612bad565b73ffffffffffffffffffffffffffffffffffffffff1661253d612223565b73ffffffffffffffffffffffffffffffffffffffff1614612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a906153e4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cbed8b9c86868686866040518663ffffffff1660e01b81526004016125f49594939291906159cf565b600060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050505050505050565b6000600260008661ffff1661ffff168152602001908152602001600020846040516126589190615a4e565b908152602001604051809103902060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000205490506000801b81141561269e57600080fd5b808280519060200120146126b157600080fd5b6000801b600260008761ffff1661ffff168152602001908152602001600020856040516126de9190615a4e565b908152602001604051809103902060008567ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020819055506127218585858561360d565b5050505050565b612730612bad565b73ffffffffffffffffffffffffffffffffffffffff1661274e612223565b73ffffffffffffffffffffffffffffffffffffffff16146127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b906153e4565b60405180910390fd5b80600d8190555050565b601280546127bb90615366565b80601f01602080910402602001604051908101604052809291908181526020018280546127e790615366565b80156128345780601f1061280957610100808354040283529160200191612834565b820191906000526020600020905b81548152906001019060200180831161281757829003601f168201915b505050505081565b60606013805461284b90615366565b80601f016020809104026020016040519081016040528092919081815260200182805461287790615366565b80156128c45780601f10612899576101008083540402835291602001916128c4565b820191906000526020600020905b8154815290600101906020018083116128a757829003601f168201915b5050505050905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61296a612bad565b73ffffffffffffffffffffffffffffffffffffffff16612988612223565b73ffffffffffffffffffffffffffffffffffffffff16146129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d5906153e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4590615ad7565b60405180910390fd5b612a57816136b0565b50565b612a62612bad565b73ffffffffffffffffffffffffffffffffffffffff16612a80612223565b73ffffffffffffffffffffffffffffffffffffffff1614612ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acd906153e4565b60405180910390fd5b8060108190555050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f5ecbdbc868630866040518563ffffffff1660e01b8152600401612b419493929190615af7565b60006040518083038186803b158015612b5957600080fd5b505afa158015612b6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612b969190615bac565b9050949350505050565b600042600c541115905090565b600033905090565b3073ffffffffffffffffffffffffffffffffffffffff166366ad5c8a858585856040518563ffffffff1660e01b8152600401612bf49493929190615c04565b600060405180830381600087803b158015612c0e57600080fd5b505af1925050508015612c1f575060015b612ccd578080519060200120600260008661ffff1661ffff16815260200190815260200160002084604051612c549190615a4e565b908152602001604051809103902060008467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020819055507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051612cc09493929190615c04565b60405180910390a1612cce565b5b50505050565b60007f7bb0080b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d475750612d4682613963565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b81600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612e2d83611dcd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60606000821415612ebb576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612fcf565b600082905060005b60008214612eed578080612ed69061592e565b915050600a82612ee6919061575e565b9150612ec3565b60008167ffffffffffffffff811115612f0957612f086143c1565b5b6040519080825280601f01601f191660200182016040528015612f3b5781602001600182028036833780820191505090505b5090505b60008514612fc857600182612f549190615977565b9150600a85612f639190615c57565b6030612f6f91906157d8565b60f81b818381518110612f8557612f8461588d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612fc1919061575e565b9450612f3f565b8093505050505b919050565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601560008282546130259190615977565b925050819055506000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b3273ffffffffffffffffffffffffffffffffffffffff16613093612bad565b73ffffffffffffffffffffffffffffffffffffffff16146130b357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130ed57600080fd5b600081116130fa57600080fd5b6000600654905060005b8281101561316d5760006131188584613a45565b905061314f857f00000000000000000000000000000000000000000000000000000000000000008361314a91906157d8565b613ab3565b8261315990615c88565b925050806131669061592e565b9050613104565b508060068190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131c491906157d8565b92505081905550505050565b60006131db82612d4e565b6131e457600080fd5b60006131ef83611dcd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061325e57508373ffffffffffffffffffffffffffffffffffffffff166132468461121b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061326f575061326e81856128ce565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661329882611dcd565b73ffffffffffffffffffffffffffffffffffffffff16146132b857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132f257600080fd5b6132fd838383613b7d565b613308600082612dba565b6001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133589190615977565b925050819055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133af91906157d8565b92505081905550816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461346e838383613b82565b505050565b600042600d54111561349b5760155461348a6120cd565b6134949190615977565b90506134a6565b6134a36120cd565b90505b90565b6134b587878787613b87565b600085856040516020016134ca9291906155ef565b60405160208183030381529060405290506134e88782868686613bf0565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637a14574889306040518363ffffffff1660e01b8152600401613545929190615cb2565b60206040518083038186803b15801561355d57600080fd5b505afa158015613571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135959190615cf0565b9050866040516135a59190615a4e565b60405180910390208861ffff168a73ffffffffffffffffffffffffffffffffffffffff167f024797cc77ce15dc717112d54fb1df125fdfd8c81344fb046c5e074427ce154389856040516135fa929190615d1d565b60405180910390a4505050505050505050565b600080828060200190518101906136249190615d46565b9150915060006014830151905061363c878284613d70565b8073ffffffffffffffffffffffffffffffffffffffff16866040516136619190615a4e565b60405180910390208861ffff167f64e10c37f404d128982dce114f5d233c14c5c7f6d8db93099e3d99dacb9e27ba858960405161369f929190615d1d565b60405180910390a450505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137ad57600080fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161389e919061466b565b60405180910390a3505050565b6138b6848484613278565b6138c284848484613d7f565b6138cb57600080fd5b50505050565b6060601280546138e090615366565b80601f016020809104026020016040519081016040528092919081815260200182805461390c90615366565b80156139595780601f1061392e57610100808354040283529160200191613959565b820191906000526020600020905b81548152906001019060200180831161393c57829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613a2e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613a3e5750613a3d82613ee0565b5b9050919050565b600080833a434244600143613a5a9190615977565b403089604051602001613a74989796959493929190615da2565b6040516020818303038152906040528051906020012060001c905060008382613a9d9190615c57565b9050613aa98185613f4a565b9250505092915050565b613abf60008383613b7d565b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613b7960008383613b82565b5050565b505050565b505050565b613b98613b92612bad565b826131d0565b613ba157600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16613bc182611dcd565b73ffffffffffffffffffffffffffffffffffffffff1614613be157600080fd5b613bea8161400d565b50505050565b6000600160008761ffff1661ffff1681526020019081526020016000208054613c1890615366565b80601f0160208091040260200160405190810160405280929190818152602001828054613c4490615366565b8015613c915780601f10613c6657610100808354040283529160200191613c91565b820191906000526020600020905b815481529060010190602001808311613c7457829003601f168201915b50505050509050600081511415613ca757600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c58031007f000000000000000000000000000000000000000000000000000000000000000034613d0f9190615977565b8884898989896040518863ffffffff1660e01b8152600401613d3696959493929190615e2f565b6000604051808303818588803b158015613d4f57600080fd5b505af1158015613d63573d6000803e3d6000fd5b5050505050505050505050565b613d7a8282614142565b505050565b6000613da08473ffffffffffffffffffffffffffffffffffffffff1661420c565b15613ed3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613dc9612bad565b8786866040518563ffffffff1660e01b8152600401613deb9493929190615ea5565b602060405180830381600087803b158015613e0557600080fd5b505af1925050508015613e3657506040513d601f19601f82011682018060405250810190613e339190615f06565b60015b613e83573d8060008114613e66576040519150601f19603f3d011682016040523d82523d6000602084013e613e6b565b606091505b50600081511415613e7b57600080fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613ed8565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008060056000858152602001908152602001600020549050600080821415613f7557849050613f79565b8190505b6000600185613f889190615977565b9050808614614001576000600560008381526020019081526020016000205490506000811415613fcf57816005600089815260200190815260200160002081905550613fff565b80600560008981526020019081526020016000208190555060056000838152602001908152602001600020600090555b505b81935050505092915050565b600061401882611dcd565b905061402681600084613b7d565b614031600083612dba565b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546140819190615977565b925050819055506008600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600760008154809291906140d190615f33565b919050555081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461413e81600084613b82565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561417c57600080fd5b61418581612d4e565b1561418f57600080fd5b6001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141df91906157d8565b925050819055506141f08282613ab3565b6007600081548092919061420390615f7c565b91905055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461423b90615366565b90600052602060002090601f01602090048101928261425d57600085556142a4565b82601f1061427657805160ff19168380011785556142a4565b828001600101855582156142a4579182015b828111156142a3578251825591602001919060010190614288565b5b5090506142b1919061433b565b5090565b8280546142c190615366565b90600052602060002090601f0160209004810192826142e3576000855561432a565b82601f106142fc57803560ff191683800117855561432a565b8280016001018555821561432a579182015b8281111561432957823582559160200191906001019061430e565b5b509050614337919061433b565b5090565b5b8082111561435457600081600090555060010161433c565b5090565b6000604051905090565b600080fd5b600080fd5b600061ffff82169050919050565b6143838161436c565b811461438e57600080fd5b50565b6000813590506143a08161437a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143f9826143b0565b810181811067ffffffffffffffff82111715614418576144176143c1565b5b80604052505050565b600061442b614358565b905061443782826143f0565b919050565b600067ffffffffffffffff821115614457576144566143c1565b5b614460826143b0565b9050602081019050919050565b82818337600083830152505050565b600061448f61448a8461443c565b614421565b9050828152602081018484840111156144ab576144aa6143ab565b5b6144b684828561446d565b509392505050565b600082601f8301126144d3576144d26143a6565b5b81356144e384826020860161447c565b91505092915050565b600067ffffffffffffffff82169050919050565b614509816144ec565b811461451457600080fd5b50565b60008135905061452681614500565b92915050565b6000806000806080858703121561454657614545614362565b5b600061455487828801614391565b945050602085013567ffffffffffffffff81111561457557614574614367565b5b614581878288016144be565b935050604061459287828801614517565b925050606085013567ffffffffffffffff8111156145b3576145b2614367565b5b6145bf878288016144be565b91505092959194509250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614600816145cb565b811461460b57600080fd5b50565b60008135905061461d816145f7565b92915050565b60006020828403121561463957614638614362565b5b60006146478482850161460e565b91505092915050565b60008115159050919050565b61466581614650565b82525050565b6000602082019050614680600083018461465c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146b182614686565b9050919050565b6146c1816146a6565b81146146cc57600080fd5b50565b6000813590506146de816146b8565b92915050565b6000602082840312156146fa576146f9614362565b5b6000614708848285016146cf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561474b578082015181840152602081019050614730565b8381111561475a576000848401525b50505050565b600061476b82614711565b614775818561471c565b935061478581856020860161472d565b61478e816143b0565b840191505092915050565b600060208201905081810360008301526147b38184614760565b905092915050565b6000602082840312156147d1576147d0614362565b5b60006147df84828501614391565b91505092915050565b6000819050919050565b6147fb816147e8565b811461480657600080fd5b50565b600081359050614818816147f2565b92915050565b60006020828403121561483457614833614362565b5b600061484284828501614809565b91505092915050565b614854816146a6565b82525050565b600060208201905061486f600083018461484b565b92915050565b6000806040838503121561488c5761488b614362565b5b600061489a858286016146cf565b92505060206148ab85828601614809565b9150509250929050565b6148be816147e8565b82525050565b60006020820190506148d960008301846148b5565b92915050565b6000806000606084860312156148f8576148f7614362565b5b6000614906868287016146cf565b9350506020614917868287016146cf565b925050604061492886828701614809565b9150509250925092565b61493b81614650565b811461494657600080fd5b50565b60008135905061495881614932565b92915050565b600080600080600060a0868803121561497a57614979614362565b5b600061498888828901614391565b955050602086013567ffffffffffffffff8111156149a9576149a8614367565b5b6149b5888289016144be565b94505060406149c688828901614809565b93505060606149d788828901614949565b925050608086013567ffffffffffffffff8111156149f8576149f7614367565b5b614a04888289016144be565b9150509295509295909350565b6000604082019050614a2660008301856148b5565b614a3360208301846148b5565b9392505050565b60008060408385031215614a5157614a50614362565b5b6000614a5f85828601614809565b9250506020614a7085828601614809565b9150509250929050565b6000604082019050614a8f600083018561484b565b614a9c60208301846148b5565b9392505050565b600067ffffffffffffffff821115614abe57614abd6143c1565b5b614ac7826143b0565b9050602081019050919050565b6000614ae7614ae284614aa3565b614421565b905082815260208101848484011115614b0357614b026143ab565b5b614b0e84828561446d565b509392505050565b600082601f830112614b2b57614b2a6143a6565b5b8135614b3b848260208601614ad4565b91505092915050565b600060208284031215614b5a57614b59614362565b5b600082013567ffffffffffffffff811115614b7857614b77614367565b5b614b8484828501614b16565b91505092915050565b600080fd5b600080fd5b60008083601f840112614bad57614bac6143a6565b5b8235905067ffffffffffffffff811115614bca57614bc9614b8d565b5b602083019150836001820283011115614be657614be5614b92565b5b9250929050565b600080600060408486031215614c0657614c05614362565b5b6000614c1486828701614391565b935050602084013567ffffffffffffffff811115614c3557614c34614367565b5b614c4186828701614b97565b92509250509250925092565b60008083601f840112614c6357614c626143a6565b5b8235905067ffffffffffffffff811115614c8057614c7f614b8d565b5b602083019150836020820283011115614c9c57614c9b614b92565b5b9250929050565b60008083601f840112614cb957614cb86143a6565b5b8235905067ffffffffffffffff811115614cd657614cd5614b8d565b5b602083019150836020820283011115614cf257614cf1614b92565b5b9250929050565b60008060008060408587031215614d1357614d12614362565b5b600085013567ffffffffffffffff811115614d3157614d30614367565b5b614d3d87828801614c4d565b9450945050602085013567ffffffffffffffff811115614d6057614d5f614367565b5b614d6c87828801614ca3565b925092505092959194509250565b6000614d8582614686565b9050919050565b614d9581614d7a565b8114614da057600080fd5b50565b600081359050614db281614d8c565b92915050565b600080600080600080600060e0888a031215614dd757614dd6614362565b5b6000614de58a828b016146cf565b9750506020614df68a828b01614391565b965050604088013567ffffffffffffffff811115614e1757614e16614367565b5b614e238a828b016144be565b9550506060614e348a828b01614809565b9450506080614e458a828b01614da3565b93505060a0614e568a828b016146cf565b92505060c088013567ffffffffffffffff811115614e7757614e76614367565b5b614e838a828b016144be565b91505092959891949750929550565b600080600060608486031215614eab57614eaa614362565b5b6000614eb986828701614391565b935050602084013567ffffffffffffffff811115614eda57614ed9614367565b5b614ee6868287016144be565b9250506040614ef786828701614517565b9150509250925092565b6000819050919050565b614f1481614f01565b82525050565b6000602082019050614f2f6000830184614f0b565b92915050565b600067ffffffffffffffff821115614f5057614f4f6143c1565b5b602082029050602081019050919050565b6000614f74614f6f84614f35565b614421565b90508083825260208201905060208402830185811115614f9757614f96614b92565b5b835b81811015614fc05780614fac88826146cf565b845260208401935050602081019050614f99565b5050509392505050565b600082601f830112614fdf57614fde6143a6565b5b8135614fef848260208601614f61565b91505092915050565b6000806040838503121561500f5761500e614362565b5b600083013567ffffffffffffffff81111561502d5761502c614367565b5b61503985828601614fca565b925050602061504a85828601614809565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b600061507b82615054565b615085818561505f565b935061509581856020860161472d565b61509e816143b0565b840191505092915050565b600060208201905081810360008301526150c38184615070565b905092915050565b600080604083850312156150e2576150e1614362565b5b60006150f0858286016146cf565b925050602061510185828601614949565b9150509250929050565b6000819050919050565b600061513061512b61512684614686565b61510b565b614686565b9050919050565b600061514282615115565b9050919050565b600061515482615137565b9050919050565b61516481615149565b82525050565b600060208201905061517f600083018461515b565b92915050565b6000806000806080858703121561519f5761519e614362565b5b60006151ad878288016146cf565b94505060206151be878288016146cf565b93505060406151cf87828801614809565b925050606085013567ffffffffffffffff8111156151f0576151ef614367565b5b6151fc878288016144be565b91505092959194509250565b60008060008060006080868803121561522457615223614362565b5b600061523288828901614391565b955050602061524388828901614391565b945050604061525488828901614809565b935050606086013567ffffffffffffffff81111561527557615274614367565b5b61528188828901614b97565b92509250509295509295909350565b600080604083850312156152a7576152a6614362565b5b60006152b5858286016146cf565b92505060206152c6858286016146cf565b9150509250929050565b600080600080608085870312156152ea576152e9614362565b5b60006152f887828801614391565b945050602061530987828801614391565b935050604061531a878288016146cf565b925050606061532b87828801614809565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061537e57607f821691505b6020821081141561539257615391615337565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006153ce60208361471c565b91506153d982615398565b602082019050919050565b600060208201905081810360008301526153fd816153c1565b9050919050565b61540d8161436c565b82525050565b60006020820190506154286000830184615404565b92915050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461545b81615366565b615465818661542e565b945060018216600081146154805760018114615491576154c4565b60ff198316865281860193506154c4565b61549a85615439565b60005b838110156154bc5781548189015260018201915060208101905061549d565b838801955050505b50505092915050565b60006154d882614711565b6154e2818561542e565b93506154f281856020860161472d565b80840191505092915050565b600061550a828561544e565b915061551682846154cd565b91508190509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061556682615522565b915061557183615522565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038313600083121516156155ac576155ab61552c565b5b817f80000000000000000000000000000000000000000000000000000000000000000383126000831216156155e4576155e361552c565b5b828201905092915050565b600060408201905081810360008301526156098185615070565b905061561860208301846148b5565b9392505050565b600060a0820190506156346000830188615404565b615641602083018761484b565b81810360408301526156538186615070565b9050615662606083018561465c565b81810360808301526156748184615070565b90509695505050505050565b60008151905061568f816147f2565b92915050565b600080604083850312156156ac576156ab614362565b5b60006156ba85828601615680565b92505060206156cb85828601615680565b9150509250929050565b60006156e0826147e8565b91506156eb836147e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157245761572361552c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615769826147e8565b9150615774836147e8565b9250826157845761578361572f565b5b828204905092915050565b600081905092915050565b60006157a6838561578f565b93506157b383858461446d565b82840190509392505050565b60006157cc82848661579a565b91508190509392505050565b60006157e3826147e8565b91506157ee836147e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156158235761582261552c565b5b828201905092915050565b600061583a838561505f565b935061584783858461446d565b615850836143b0565b840190509392505050565b60006040820190506158706000830186615404565b818103602083015261588381848661582e565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126158e8576158e76158bc565b5b80840192508235915067ffffffffffffffff82111561590a576159096158c1565b5b602083019250600182023603831315615926576159256158c6565b5b509250929050565b6000615939826147e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561596c5761596b61552c565b5b600182019050919050565b6000615982826147e8565b915061598d836147e8565b9250828210156159a05761599f61552c565b5b828203905092915050565b60006159b782856154cd565b91506159c382846154cd565b91508190509392505050565b60006080820190506159e46000830188615404565b6159f16020830187615404565b6159fe60408301866148b5565b8181036060830152615a1181848661582e565b90509695505050505050565b6000615a2882615054565b615a32818561578f565b9350615a4281856020860161472d565b80840191505092915050565b6000615a5a8284615a1d565b915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615ac160268361471c565b9150615acc82615a65565b604082019050919050565b60006020820190508181036000830152615af081615ab4565b9050919050565b6000608082019050615b0c6000830187615404565b615b196020830186615404565b615b26604083018561484b565b615b3360608301846148b5565b95945050505050565b6000615b4f615b4a8461443c565b614421565b905082815260208101848484011115615b6b57615b6a6143ab565b5b615b7684828561472d565b509392505050565b600082601f830112615b9357615b926143a6565b5b8151615ba3848260208601615b3c565b91505092915050565b600060208284031215615bc257615bc1614362565b5b600082015167ffffffffffffffff811115615be057615bdf614367565b5b615bec84828501615b7e565b91505092915050565b615bfe816144ec565b82525050565b6000608082019050615c196000830187615404565b8181036020830152615c2b8186615070565b9050615c3a6040830185615bf5565b8181036060830152615c4c8184615070565b905095945050505050565b6000615c62826147e8565b9150615c6d836147e8565b925082615c7d57615c7c61572f565b5b828206905092915050565b6000615c93826147e8565b91506000821415615ca757615ca661552c565b5b600182039050919050565b6000604082019050615cc76000830185615404565b615cd4602083018461484b565b9392505050565b600081519050615cea81614500565b92915050565b600060208284031215615d0657615d05614362565b5b6000615d1484828501615cdb565b91505092915050565b6000604082019050615d3260008301856148b5565b615d3f6020830184615bf5565b9392505050565b60008060408385031215615d5d57615d5c614362565b5b600083015167ffffffffffffffff811115615d7b57615d7a614367565b5b615d8785828601615b7e565b9250506020615d9885828601615680565b9150509250929050565b600061010082019050615db8600083018b61484b565b615dc5602083018a6148b5565b615dd260408301896148b5565b615ddf60608301886148b5565b615dec60808301876148b5565b615df960a0830186614f0b565b615e0660c083018561484b565b615e1360e08301846148b5565b9998505050505050505050565b615e2981614d7a565b82525050565b600060c082019050615e446000830189615404565b8181036020830152615e568188615070565b90508181036040830152615e6a8187615070565b9050615e796060830186615e20565b615e86608083018561484b565b81810360a0830152615e988184615070565b9050979650505050505050565b6000608082019050615eba600083018761484b565b615ec7602083018661484b565b615ed460408301856148b5565b8181036060830152615ee68184615070565b905095945050505050565b600081519050615f00816145f7565b92915050565b600060208284031215615f1c57615f1b614362565b5b6000615f2a84828501615ef1565b91505092915050565b6000615f3e82615522565b91507f8000000000000000000000000000000000000000000000000000000000000000821415615f7157615f7061552c565b5b600182039050919050565b6000615f8782615522565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615fba57615fb961552c565b5b60018201905091905056fea2646970667358221220465ae67298535ba81083378fd3c590767c4c1d8b44ebbd85e6f9556e058d30c464736f6c634300080900330000000000000000000000000000000000000000000000000429d069189e000000000000000000000000000000000000000000000000000000d529ae9e8600000000000000000000000000003c2269811836af69497e5f486a85d7316753cf6200000000000000000000000000000000000000000000000000000000000023be0000000000000000000000000000000000000000000000000000000000000352