[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "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": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountWithdrawn", "type": "uint256" } ], "name": "PayoutWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256", "name": "totalPayout", "type": "uint256" } ], "name": "TokensBurned", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "ClaimPayout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "ForgeGem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "MeltGems", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "Mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "RevealMyGems", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "_devShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_forgePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_mintOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_reRollPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_revealOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_totalEverMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "changeForgePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "changeReRollPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "checkPayout", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "checkUserPayout", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "distributeRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "doInput", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "mintOpen", "type": "bool" } ], "name": "editMintStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "revealOpen", "type": "bool" } ], "name": "editRevealStatus", "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": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "isRevealed", "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": "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": [], "name": "paymentToken", "outputs": [ { "internalType": "contract IERC20Burnable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "reRollGems", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "devAddress", "type": "address" } ], "name": "setDevAddy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "erc20Address", "type": "address" } ], "name": "setERC20Contract", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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" }, { "stateMutability": "payable", "type": "receive" } ]
60806040525f6012556001601355620186a06017556175306018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff02191690831515021790555034801562000059575f80fd5b50604051620064473803806200644783398181016040528101906200007f9190620002cd565b806040518060400160405280600681526020017f446547656d7300000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4447454d00000000000000000000000000000000000000000000000000000000815250815f9081620000fc919062000561565b5080600190816200010e919062000561565b5050506001600b819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200018c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000183919062000656565b60405180910390fd5b6200019d81620001a560201b60201c565b505062000671565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000297826200026c565b9050919050565b620002a9816200028b565b8114620002b4575f80fd5b50565b5f81519050620002c7816200029e565b92915050565b5f60208284031215620002e557620002e462000268565b5b5f620002f484828501620002b7565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200037957607f821691505b6020821081036200038f576200038e62000334565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003f37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003b6565b620003ff8683620003b6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000449620004436200043d8462000417565b62000420565b62000417565b9050919050565b5f819050919050565b620004648362000429565b6200047c620004738262000450565b848454620003c2565b825550505050565b5f90565b6200049262000484565b6200049f81848462000459565b505050565b5b81811015620004c657620004ba5f8262000488565b600181019050620004a5565b5050565b601f8211156200051557620004df8162000395565b620004ea84620003a7565b81016020851015620004fa578190505b620005126200050985620003a7565b830182620004a4565b50505b505050565b5f82821c905092915050565b5f620005375f19846008026200051a565b1980831691505092915050565b5f62000551838362000526565b9150826002028217905092915050565b6200056c82620002fd565b67ffffffffffffffff81111562000588576200058762000307565b5b62000594825462000361565b620005a1828285620004ca565b5f60209050601f831160018114620005d7575f8415620005c2578287015190505b620005ce858262000544565b8655506200063d565b601f198416620005e78662000395565b5f5b828110156200061057848901518255600182019150602085019450602081019050620005e9565b868310156200063057848901516200062c601f89168262000526565b8355505b6001600288020188555050505b505050505050565b62000650816200028b565b82525050565b5f6020820190506200066b5f83018462000645565b92915050565b615dc8806200067f5f395ff3fe608060405260043610610275575f3560e01c80636352211e1161014e578063a84547a9116100c0578063cd9a222811610079578063cd9a222814610935578063d0d125081461095f578063de0e93b514610989578063e9099829146109b1578063e985e9c5146109d9578063f2fde38b14610a15576102af565b8063a84547a91461082c578063b145c01314610856578063b88d4fde14610881578063c3292950146108a9578063c87b56dd146108d1578063cac8d5381461090d576102af565b80637c193d0d116101125780637c193d0d146107365780638da5cb5b1461075e57806395d89b41146107885780639d6c1abd146107b25780639ffad757146107da578063a22cb46514610804576102af565b80636352211e146106545780636b363ca11461069057806370a08231146106ba578063715018a6146106f65780637b0eba7f1461070c576102af565b80632fb8a96e116101e757806342842e0e116101ab57806342842e0e1461053a57806342966c6814610562578063433bfbbc1461058a5780634f6ccce7146105c65780634fdc0194146106025780635055fbc314610618576102af565b80632fb8a96e146104b25780633013ce29146104c8578063331bcfa8146104f257806335bea4e1146105085780633bc8da1a14610512576102af565b8063095ea7b311610239578063095ea7b314610397578063142422e4146103bf57806318160ddd146103e757806323b872dd146104115780632a55205a146104395780632f745c5914610476576102af565b806301ffc9a7146102b157806305000410146102ed57806306fdde0314610315578063078837031461033f578063081812fc1461035b576102af565b366102af575f606460143461028a9190613f7f565b6102949190613fed565b90508060155f8282546102a7919061401d565b925050819055005b005b3480156102bc575f80fd5b506102d760048036038101906102d291906140b6565b610a3d565b6040516102e491906140fb565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e919061416e565b610a6e565b005b348015610320575f80fd5b50610329610ab9565b6040516103369190614223565b60405180910390f35b6103596004803603810190610354919061426d565b610b48565b005b348015610366575f80fd5b50610381600480360381019061037c919061426d565b610e51565b60405161038e91906142a7565b60405180910390f35b3480156103a2575f80fd5b506103bd60048036038101906103b891906142c0565b610e6c565b005b3480156103ca575f80fd5b506103e560048036038101906103e0919061426d565b610e82565b005b3480156103f2575f80fd5b506103fb610e94565b604051610408919061430d565b60405180910390f35b34801561041c575f80fd5b5061043760048036038101906104329190614326565b610ea0565b005b348015610444575f80fd5b5061045f600480360381019061045a9190614376565b610f9f565b60405161046d9291906143b4565b60405180910390f35b348015610481575f80fd5b5061049c600480360381019061049791906142c0565b610fcd565b6040516104a9919061430d565b60405180910390f35b3480156104bd575f80fd5b506104c6611071565b005b3480156104d3575f80fd5b506104dc611235565b6040516104e99190614436565b60405180910390f35b3480156104fd575f80fd5b5061050661125a565b005b610510611543565b005b34801561051d575f80fd5b506105386004803603810190610533919061458f565b611545565b005b348015610545575f80fd5b50610560600480360381019061055b9190614326565b611766565b005b34801561056d575f80fd5b506105886004803603810190610583919061426d565b611785565b005b348015610595575f80fd5b506105b060048036038101906105ab919061416e565b61179b565b6040516105bd919061430d565b60405180910390f35b3480156105d1575f80fd5b506105ec60048036038101906105e7919061426d565b6117e1565b6040516105f9919061430d565b60405180910390f35b34801561060d575f80fd5b50610616611853565b005b348015610623575f80fd5b5061063e6004803603810190610639919061426d565b611a56565b60405161064b91906140fb565b60405180910390f35b34801561065f575f80fd5b5061067a6004803603810190610675919061426d565b611a73565b60405161068791906142a7565b60405180910390f35b34801561069b575f80fd5b506106a4611a84565b6040516106b1919061430d565b60405180910390f35b3480156106c5575f80fd5b506106e060048036038101906106db919061416e565b611a8a565b6040516106ed919061430d565b60405180910390f35b348015610701575f80fd5b5061070a611b40565b005b348015610717575f80fd5b50610720611b53565b60405161072d919061430d565b60405180910390f35b348015610741575f80fd5b5061075c60048036038101906107579190614600565b611b59565b005b348015610769575f80fd5b50610772611b7e565b60405161077f91906142a7565b60405180910390f35b348015610793575f80fd5b5061079c611ba6565b6040516107a99190614223565b60405180910390f35b3480156107bd575f80fd5b506107d860048036038101906107d3919061426d565b611c36565b005b3480156107e5575f80fd5b506107ee611c48565b6040516107fb919061430d565b60405180910390f35b34801561080f575f80fd5b5061082a6004803603810190610825919061462b565b611c4e565b005b348015610837575f80fd5b50610840611c64565b60405161084d91906140fb565b60405180910390f35b348015610861575f80fd5b5061086a611c77565b604051610878929190614669565b60405180910390f35b34801561088c575f80fd5b506108a760048036038101906108a29190614740565b611d0e565b005b3480156108b4575f80fd5b506108cf60048036038101906108ca9190614819565b611d33565b005b3480156108dc575f80fd5b506108f760048036038101906108f2919061426d565b61204f565b6040516109049190614223565b60405180910390f35b348015610918575f80fd5b50610933600480360381019061092e919061416e565b612061565b005b348015610940575f80fd5b5061094961211a565b60405161095691906140fb565b60405180910390f35b34801561096a575f80fd5b5061097361212c565b604051610980919061430d565b60405180910390f35b348015610994575f80fd5b506109af60048036038101906109aa9190614600565b612132565b005b3480156109bc575f80fd5b506109d760048036038101906109d29190614819565b612156565b005b3480156109e4575f80fd5b506109ff60048036038101906109fa9190614864565b6125d1565b604051610a0c91906140fb565b60405180910390f35b348015610a20575f80fd5b50610a3b6004803603810190610a36919061416e565b61265f565b005b5f610a47826126e3565b80610a575750610a56826127c4565b5b80610a675750610a668261283d565b5b9050919050565b610a7661289d565b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f8054610ac7906148cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610af3906148cf565b8015610b3e5780601f10610b1557610100808354040283529160200191610b3e565b820191905f5260205f20905b815481529060010190602001808311610b2157829003601f168201915b5050505050905090565b610b50612924565b60195f9054906101000a900460ff16610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9590614949565b60405180910390fd5b5f81118015610bae5750600a8111155b610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be4906149d7565b60405180910390fd5b80670de0b6b3a7640000610c019190613f7f565b3414610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990614a3f565b60405180910390fd5b600a81600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8d919061401d565b1115610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc590614acd565b60405180910390fd5b6103e881610cda610e94565b610ce4919061401d565b1115610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90614b5b565b60405180910390fd5b5f6064600534610d359190613f7f565b610d3f9190613fed565b90508060155f828254610d52919061401d565b925050819055508160165f828254610d6a919061401d565b925050819055505f5b82811015610df1575f60135f815480929190610d8e90614b79565b919050559050610d9e3382612973565b610ddd816040518060400160405280600681526020017f302e6a736f6e0000000000000000000000000000000000000000000000000000815250612990565b508080610de990614b79565b915050610d73565b5081600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e3e919061401d565b9250508190555050610e4e6129ea565b50565b5f610e5b826129f4565b50610e6582612a7a565b9050919050565b610e7e8282610e79612ab3565b612aba565b5050565b610e8a61289d565b8060188190555050565b5f600880549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f10575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610f0791906142a7565b60405180910390fd5b5f610f238383610f1e612ab3565b612acc565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f99578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610f9093929190614bc0565b60405180910390fd5b50505050565b5f805f6127106101f485610fb39190613f7f565b610fbd9190613fed565b9050308192509250509250929050565b5f610fd783611a8a565b821061101c5782826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016110139291906143b4565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b611079612924565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90614c3f565b60405180910390fd5b5f6015541161114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390614ca7565b60405180910390fd5b5f60155490505f6014819055505f6015819055505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516111a690614cf2565b5f6040518083038185875af1925050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b5050905080611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122090614d50565b60405180910390fd5b50506112336129ea565b565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611262612924565b5f670de0b6b3a76400006017546112799190613f7f565b90508060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016112d8929190614d6e565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190614da9565b1015611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f90614e44565b60405180910390fd5b5f60135f81548092919061136b90614b79565b919050559050600160165f828254611383919061401d565b9250508190555060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016113e893929190614e62565b6020604051808303815f875af1158015611404573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114289190614eab565b611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90614f20565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b81526004016114c1919061430d565b5f604051808303815f87803b1580156114d8575f80fd5b505af11580156114ea573d5f803e3d5ffd5b505050506114f83382612973565b611537816040518060400160405280600681526020017f302e6a736f6e0000000000000000000000000000000000000000000000000000815250612990565b50506115416129ea565b565b565b601960019054906101000a900460ff16611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90614f88565b60405180910390fd5b5f81511180156115a65750600a815111155b6115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90615016565b60405180910390fd5b5f5b8151811015611762575f82828151811061160457611603615034565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff1661162e82611a73565b73ffffffffffffffffffffffffffffffffffffffff1614611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906150ab565b60405180910390fd5b600d5f8281526020019081526020015f205f9054906101000a900460ff16156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990615113565b60405180910390fd5b5f6116ec82612ae1565b90505f6116f882612b47565b60405160200161170891906151b5565b60405160208183030381529060405290506117238382612990565b6001600d5f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550505050808061175a90614b79565b9150506115e7565b5050565b61178083838360405180602001604052805f815250611d0e565b505050565b6117975f82611792612ab3565b612acc565b5050565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6117ea610e94565b821061182f575f826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016118269291906143b4565b60405180910390fd5b6008828154811061184357611842615034565b5b905f5260205f2001549050919050565b61185b612924565b5f600e5f611867612ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81116118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc90615220565b60405180910390fd5b5f600e5f6118f1612ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060125f82825461193f919061523e565b925050819055505f61194f612ab3565b73ffffffffffffffffffffffffffffffffffffffff168260405161197290614cf2565b5f6040518083038185875af1925050503d805f81146119ac576040519150601f19603f3d011682016040523d82523d5f602084013e6119b1565b606091505b50509050806119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec906152bb565b60405180910390fd5b6119fd612ab3565b73ffffffffffffffffffffffffffffffffffffffff167faa916bb7738886447c333e8803dd7d94e5fcb6acb2f5d5aa6502373dd59dc55b83604051611a42919061430d565b60405180910390a25050611a546129ea565b565b600d602052805f5260405f205f915054906101000a900460ff1681565b5f611a7d826129f4565b9050919050565b60155481565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afb575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401611af291906142a7565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611b4861289d565b611b515f612cc5565b565b60175481565b611b6161289d565b80601960016101000a81548160ff02191690831515021790555050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611bb5906148cf565b80601f0160208091040260200160405190810160405280929190818152602001828054611be1906148cf565b8015611c2c5780601f10611c0357610100808354040283529160200191611c2c565b820191905f5260205f20905b815481529060010190602001808311611c0f57829003601f168201915b5050505050905090565b611c3e61289d565b8060178190555050565b60185481565b611c60611c59612ab3565b8383612d88565b5050565b601960019054906101000a900460ff1681565b5f805f60125460155447611c8b919061523e565b611c95919061523e565b90505f611ca0610e94565b03611cb1575f809250925050611d0a565b5f611cba610e94565b82611cc59190613fed565b90505f6064605f83611cd79190613f7f565b611ce19190613fed565b90505f6064600584611cf39190613f7f565b611cfd9190613fed565b9050818195509550505050505b9091565b611d19848484610ea0565b611d2d611d24612ab3565b85858585612ef1565b50505050565b611d3b612924565b60195f9054906101000a900460ff1615611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190614f88565b60405180910390fd5b5f82829050118015611da0575060058282905011155b611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd690615349565b60405180910390fd5b5f80611de9611c77565b915091505f8211611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e26906153b1565b60405180910390fd5b5f805f5b86869050811015611f2557611e46612ab3565b73ffffffffffffffffffffffffffffffffffffffff16611e7e888884818110611e7257611e71615034565b5b90506020020135611a73565b73ffffffffffffffffffffffffffffffffffffffff1614611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb9061543f565b60405180910390fd5b8483611ee0919061401d565b92508382611eee919061401d565b9150611f12878783818110611f0657611f05615034565b5b9050602002013561309d565b8080611f1d90614b79565b915050611e33565b5081600e5f611f32612ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f79919061401d565b925050819055508060145f828254611f91919061401d565b925050819055505f6101f4606483611fa99190613f7f565b611fb39190613fed565b90508060155f828254611fc6919061401d565b925050819055508260125f828254611fde919061401d565b92505081905550611fed612ab3565b73ffffffffffffffffffffffffffffffffffffffff167f5956fc7e6ee60022508bcff7b082f9c4ef4683b8033fbe751b9e6f355ab1f898888886604051612036939291906154d5565b60405180910390a2505050505061204b6129ea565b5050565b606061205a8261311f565b9050919050565b61206961289d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce9061554f565b60405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195f9054906101000a900460ff1681565b60165481565b61213a61289d565b8060195f6101000a81548160ff02191690831515021790555050565b61215e612924565b5f828290501180156121745750600a8282905011155b6121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa906155dd565b60405180910390fd5b5f82829050670de0b6b3a76400006018546121ce9190613f7f565b6121d89190613f7f565b90508060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401612237929190614d6e565b602060405180830381865afa158015612252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122769190614da9565b10156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90615645565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd6122fc612ab3565b30846040518463ffffffff1660e01b815260040161231c93929190614e62565b6020604051808303815f875af1158015612338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235c9190614eab565b61239b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612392906156ad565b60405180910390fd5b5f5b8383905081101561253c576123b0612ab3565b73ffffffffffffffffffffffffffffffffffffffff166123e88585848181106123dc576123db615034565b5b90506020020135611a73565b73ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590615715565b60405180910390fd5b600d5f85858481811061245457612453615034565b5b9050602002013581526020019081526020015f205f9054906101000a900460ff166124b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ab906157a3565b60405180910390fd5b5f6124d78585848181106124cb576124ca615034565b5b90506020020135612ae1565b90505f6124e382612b47565b6040516020016124f391906151b5565b604051602081830303815290604052905061252786868581811061251a57612519615034565b5b9050602002013582612990565b5050808061253490614b79565b91505061239d565b5060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b8152600401612597919061430d565b5f604051808303815f87803b1580156125ae575f80fd5b505af11580156125c0573d5f803e3d5ffd5b50505050506125cd6129ea565b5050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b61266761289d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126d7575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016126ce91906142a7565b60405180910390fd5b6126e081612cc5565b50565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127ad57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806127bd57506127bc8261322a565b5b9050919050565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128365750612835826126e3565b5b9050919050565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128965750612895826127c4565b5b9050919050565b6128a5612ab3565b73ffffffffffffffffffffffffffffffffffffffff166128c3611b7e565b73ffffffffffffffffffffffffffffffffffffffff1614612922576128e6612ab3565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161291991906142a7565b60405180910390fd5b565b6002600b5403612969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129609061580b565b60405180910390fd5b6002600b81905550565b61298c828260405180602001604052805f815250613293565b5050565b80600a5f8481526020019081526020015f2090816129ae91906159bd565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516129de919061430d565b60405180910390a15050565b6001600b81905550565b5f806129ff836132b6565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a7157826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612a68919061430d565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b612ac783838360016132ef565b505050565b5f612ad88484846134ae565b90509392505050565b5f80612aeb611c77565b5090505f60016101a4423387434188604051602001612b0f96959493929190615b2a565b604051602081830303815290604052805190602001205f1c612b319190615b99565b612b3b919061401d565b90508092505050919050565b60605f8203612b8d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612cc0565b5f8290505f5b5f8214612bbc578080612ba590614b79565b915050600a82612bb59190613fed565b9150612b93565b5f8167ffffffffffffffff811115612bd757612bd6614453565b5b6040519080825280601f01601f191660200182016040528015612c095781602001600182028036833780820191505090505b5090505f8290505b5f8614612cb857600181612c25919061523e565b90505f600a8088612c369190613fed565b612c409190613f7f565b87612c4b919061523e565b6030612c579190615bd5565b90505f8160f81b905080848481518110612c7457612c73615034565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a88612caf9190613fed565b97505050612c11565b819450505050505b919050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612df857816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401612def91906142a7565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612ee491906140fb565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115613096578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612f4f9493929190615c5b565b6020604051808303815f875af1925050508015612f8a57506040513d601f19601f82011682018060405250810190612f879190615cb9565b60015b61300b573d805f8114612fb8576040519150601f19603f3d011682016040523d82523d5f602084013e612fbd565b606091505b505f81510361300357836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612ffa91906142a7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461309457836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161308b91906142a7565b60405180910390fd5b505b5050505050565b5f6130a95f835f612acc565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361311b57816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613112919061430d565b60405180910390fd5b5050565b606061312a826129f4565b505f600a5f8481526020019081526020015f208054613148906148cf565b80601f0160208091040260200160405190810160405280929190818152602001828054613174906148cf565b80156131bf5780601f10613196576101008083540402835291602001916131bf565b820191905f5260205f20905b8154815290600101906020018083116131a257829003601f168201915b505050505090505f6131cf6135c8565b90505f8151036131e3578192505050613225565b5f825111156132175780826040516020016131ff929190615ce4565b60405160208183030381529060405292505050613225565b613220846135e8565b925050505b919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61329d838361364e565b6132b16132a8612ab3565b5f858585612ef1565b505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061332757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613459575f613336846129f4565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133a057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156133b357506133b181846125d1565b155b156133f557826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016133ec91906142a7565b60405180910390fd5b811561345757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f806134bb858585613741565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134fe576134f98461394c565b61353d565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461353c5761353b8185613990565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361357e5761357984613a67565b6135bd565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146135bc576135bb8585613b27565b5b5b809150509392505050565b60606040518060800160405280605e8152602001615d35605e9139905090565b60606135f3826129f4565b505f6135fd6135c8565b90505f81511161361b5760405180602001604052805f815250613646565b8061362584613bab565b604051602001613636929190615ce4565b6040516020818303038152906040525b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136be575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016136b591906142a7565b60405180910390fd5b5f6136ca83835f612acc565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461373c575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161373391906142a7565b60405180910390fd5b505050565b5f8061374c846132b6565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461378d5761378c818486613c75565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613818576137cc5f855f806132ef565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461389757600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f61399a83611a8a565b90505f60075f8481526020019081526020015f205490505f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050828214613a39575f815f8581526020019081526020015f2054905080825f8581526020019081526020015f20819055508260075f8381526020019081526020015f2081905550505b60075f8581526020019081526020015f205f9055805f8481526020019081526020015f205f90555050505050565b5f6001600880549050613a7a919061523e565b90505f60095f8481526020019081526020015f205490505f60088381548110613aa657613aa5615034565b5b905f5260205f20015490508060088381548110613ac657613ac5615034565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f90556008805480613b0e57613b0d615d07565b5b600190038181905f5260205f20015f9055905550505050565b5f6001613b3384611a8a565b613b3d919061523e565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b60605f6001613bb984613d38565b0190505f8167ffffffffffffffff811115613bd757613bd6614453565b5b6040519080825280601f01601f191660200182016040528015613c095781602001600182028036833780820191505090505b5090505f82602001820190505b600115613c6a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581613c5f57613c5e613fc0565b5b0494505f8503613c16575b819350505050919050565b613c80838383613e89565b613d33575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613cf457806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613ceb919061430d565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613d2a9291906143b4565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613d94577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613d8a57613d89613fc0565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613dd1576d04ee2d6d415b85acef81000000008381613dc757613dc6613fc0565b5b0492506020810190505b662386f26fc100008310613e0057662386f26fc100008381613df657613df5613fc0565b5b0492506010810190505b6305f5e1008310613e29576305f5e1008381613e1f57613e1e613fc0565b5b0492506008810190505b6127108310613e4e576127108381613e4457613e43613fc0565b5b0492506004810190505b60648310613e715760648381613e6757613e66613fc0565b5b0492506002810190505b600a8310613e80576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613f4057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613f015750613f0084846125d1565b5b80613f3f57508273ffffffffffffffffffffffffffffffffffffffff16613f2783612a7a565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613f8982613f49565b9150613f9483613f49565b9250828202613fa281613f49565b91508282048414831517613fb957613fb8613f52565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ff782613f49565b915061400283613f49565b92508261401257614011613fc0565b5b828204905092915050565b5f61402782613f49565b915061403283613f49565b925082820190508082111561404a57614049613f52565b5b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61409581614061565b811461409f575f80fd5b50565b5f813590506140b08161408c565b92915050565b5f602082840312156140cb576140ca614059565b5b5f6140d8848285016140a2565b91505092915050565b5f8115159050919050565b6140f5816140e1565b82525050565b5f60208201905061410e5f8301846140ec565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61413d82614114565b9050919050565b61414d81614133565b8114614157575f80fd5b50565b5f8135905061416881614144565b92915050565b5f6020828403121561418357614182614059565b5b5f6141908482850161415a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156141d05780820151818401526020810190506141b5565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6141f582614199565b6141ff81856141a3565b935061420f8185602086016141b3565b614218816141db565b840191505092915050565b5f6020820190508181035f83015261423b81846141eb565b905092915050565b61424c81613f49565b8114614256575f80fd5b50565b5f8135905061426781614243565b92915050565b5f6020828403121561428257614281614059565b5b5f61428f84828501614259565b91505092915050565b6142a181614133565b82525050565b5f6020820190506142ba5f830184614298565b92915050565b5f80604083850312156142d6576142d5614059565b5b5f6142e38582860161415a565b92505060206142f485828601614259565b9150509250929050565b61430781613f49565b82525050565b5f6020820190506143205f8301846142fe565b92915050565b5f805f6060848603121561433d5761433c614059565b5b5f61434a8682870161415a565b935050602061435b8682870161415a565b925050604061436c86828701614259565b9150509250925092565b5f806040838503121561438c5761438b614059565b5b5f61439985828601614259565b92505060206143aa85828601614259565b9150509250929050565b5f6040820190506143c75f830185614298565b6143d460208301846142fe565b9392505050565b5f819050919050565b5f6143fe6143f96143f484614114565b6143db565b614114565b9050919050565b5f61440f826143e4565b9050919050565b5f61442082614405565b9050919050565b61443081614416565b82525050565b5f6020820190506144495f830184614427565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614489826141db565b810181811067ffffffffffffffff821117156144a8576144a7614453565b5b80604052505050565b5f6144ba614050565b90506144c68282614480565b919050565b5f67ffffffffffffffff8211156144e5576144e4614453565b5b602082029050602081019050919050565b5f80fd5b5f61450c614507846144cb565b6144b1565b9050808382526020820190506020840283018581111561452f5761452e6144f6565b5b835b8181101561455857806145448882614259565b845260208401935050602081019050614531565b5050509392505050565b5f82601f8301126145765761457561444f565b5b81356145868482602086016144fa565b91505092915050565b5f602082840312156145a4576145a3614059565b5b5f82013567ffffffffffffffff8111156145c1576145c061405d565b5b6145cd84828501614562565b91505092915050565b6145df816140e1565b81146145e9575f80fd5b50565b5f813590506145fa816145d6565b92915050565b5f6020828403121561461557614614614059565b5b5f614622848285016145ec565b91505092915050565b5f806040838503121561464157614640614059565b5b5f61464e8582860161415a565b925050602061465f858286016145ec565b9150509250929050565b5f60408201905061467c5f8301856142fe565b61468960208301846142fe565b9392505050565b5f80fd5b5f67ffffffffffffffff8211156146ae576146ad614453565b5b6146b7826141db565b9050602081019050919050565b828183375f83830152505050565b5f6146e46146df84614694565b6144b1565b905082815260208101848484011115614700576146ff614690565b5b61470b8482856146c4565b509392505050565b5f82601f8301126147275761472661444f565b5b81356147378482602086016146d2565b91505092915050565b5f805f806080858703121561475857614757614059565b5b5f6147658782880161415a565b94505060206147768782880161415a565b935050604061478787828801614259565b925050606085013567ffffffffffffffff8111156147a8576147a761405d565b5b6147b487828801614713565b91505092959194509250565b5f80fd5b5f8083601f8401126147d9576147d861444f565b5b8235905067ffffffffffffffff8111156147f6576147f56147c0565b5b602083019150836020820283011115614812576148116144f6565b5b9250929050565b5f806020838503121561482f5761482e614059565b5b5f83013567ffffffffffffffff81111561484c5761484b61405d565b5b614858858286016147c4565b92509250509250929050565b5f806040838503121561487a57614879614059565b5b5f6148878582860161415a565b92505060206148988582860161415a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806148e657607f821691505b6020821081036148f9576148f86148a2565b5b50919050565b7f4d696e74696e6720697320436c6f7365640000000000000000000000000000005f82015250565b5f6149336011836141a3565b915061493e826148ff565b602082019050919050565b5f6020820190508181035f83015261496081614927565b9050919050565b7f4d757374206d696e74206265747765656e203120616e6420313020746f6b656e5f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149c16021836141a3565b91506149cc82614967565b604082019050919050565b5f6020820190508181035f8301526149ee816149b5565b9050919050565b7f4e6f7420456e6f7567682046756e6473000000000000000000000000000000005f82015250565b5f614a296010836141a3565b9150614a34826149f5565b602082019050919050565b5f6020820190508181035f830152614a5681614a1d565b9050919050565b7f43616e6e6f74206d696e74206d6f7265207468616e20313020746f6b656e73205f8201527f7065722061646472657373000000000000000000000000000000000000000000602082015250565b5f614ab7602b836141a3565b9150614ac282614a5d565b604082019050919050565b5f6020820190508181035f830152614ae481614aab565b9050919050565b7f4d696e74696e67206c696d6974206f66203130303020746f6b656e73207265615f8201527f6368656400000000000000000000000000000000000000000000000000000000602082015250565b5f614b456024836141a3565b9150614b5082614aeb565b604082019050919050565b5f6020820190508181035f830152614b7281614b39565b9050919050565b5f614b8382613f49565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bb557614bb4613f52565b5b600182019050919050565b5f606082019050614bd35f830186614298565b614be060208301856142fe565b614bed6040830184614298565b949350505050565b7f43616c6c6572206973206e6f74207468652044657600000000000000000000005f82015250565b5f614c296015836141a3565b9150614c3482614bf5565b602082019050919050565b5f6020820190508181035f830152614c5681614c1d565b9050919050565b7f4e6f20726f79616c7469657320746f20646973747269627574650000000000005f82015250565b5f614c91601a836141a3565b9150614c9c82614c5d565b602082019050919050565b5f6020820190508181035f830152614cbe81614c85565b9050919050565b5f81905092915050565b50565b5f614cdd5f83614cc5565b9150614ce882614ccf565b5f82019050919050565b5f614cfc82614cd2565b9150819050919050565b7f5472616e73666572204661696c656400000000000000000000000000000000005f82015250565b5f614d3a600f836141a3565b9150614d4582614d06565b602082019050919050565b5f6020820190508181035f830152614d6781614d2e565b9050919050565b5f604082019050614d815f830185614298565b614d8e6020830184614298565b9392505050565b5f81519050614da381614243565b92915050565b5f60208284031215614dbe57614dbd614059565b5b5f614dcb84828501614d95565b91505092915050565b7f466f72676547656d3a20496e73756666696369656e7420616c6c6f77616e63655f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f614e2e6021836141a3565b9150614e3982614dd4565b604082019050919050565b5f6020820190508181035f830152614e5b81614e22565b9050919050565b5f606082019050614e755f830186614298565b614e826020830185614298565b614e8f60408301846142fe565b949350505050565b5f81519050614ea5816145d6565b92915050565b5f60208284031215614ec057614ebf614059565b5b5f614ecd84828501614e97565b91505092915050565b7f5061796d656e74207472616e73666572206661696c65642e00000000000000005f82015250565b5f614f0a6018836141a3565b9150614f1582614ed6565b602082019050919050565b5f6020820190508181035f830152614f3781614efe565b9050919050565b7f52657665616c7320617265206e6f74206f70656e0000000000000000000000005f82015250565b5f614f726014836141a3565b9150614f7d82614f3e565b602082019050919050565b5f6020820190508181035f830152614f9f81614f66565b9050919050565b7f43616e206f6e6c792052657665616c2031202d203130204e46547320617420615f8201527f2074696d65000000000000000000000000000000000000000000000000000000602082015250565b5f6150006025836141a3565b915061500b82614fa6565b604082019050919050565b5f6020820190508181035f83015261502d81614ff4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f596f7520646f206e6f74206f776e2074686973204e46540000000000000000005f82015250565b5f6150956017836141a3565b91506150a082615061565b602082019050919050565b5f6020820190508181035f8301526150c281615089565b9050919050565b7f546f6b656e20697320616c72656164792072657665616c6564000000000000005f82015250565b5f6150fd6019836141a3565b9150615108826150c9565b602082019050919050565b5f6020820190508181035f83015261512a816150f1565b9050919050565b5f81905092915050565b5f61514582614199565b61514f8185615131565b935061515f8185602086016141b3565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f61519f600583615131565b91506151aa8261516b565b600582019050919050565b5f6151c0828461513b565b91506151cb82615193565b915081905092915050565b7f6e6f207061796f757420617661696c61626c65000000000000000000000000005f82015250565b5f61520a6013836141a3565b9150615215826151d6565b602082019050919050565b5f6020820190508181035f830152615237816151fe565b9050919050565b5f61524882613f49565b915061525383613f49565b925082820390508181111561526b5761526a613f52565b5b92915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6152a5600f836141a3565b91506152b082615271565b602082019050919050565b5f6020820190508181035f8301526152d281615299565b9050919050565b7f43616e206f6e6c79206275726e206265747765656e203120616e642035204e465f8201527f547320617420612074696d650000000000000000000000000000000000000000602082015250565b5f615333602c836141a3565b915061533e826152d9565b604082019050919050565b5f6020820190508181035f83015261536081615327565b9050919050565b7f5061796f7574206973206e6f7420617661696c61626c650000000000000000005f82015250565b5f61539b6017836141a3565b91506153a682615367565b602082019050919050565b5f6020820190508181035f8301526153c88161538f565b9050919050565b7f4552433732314275726e61626c653a2043616c6c6572206973206e6f74206f775f8201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b5f6154296023836141a3565b9150615434826153cf565b604082019050919050565b5f6020820190508181035f8301526154568161541d565b9050919050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f615485838561545d565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156154b8576154b761546d565b5b6020830292506154c9838584615471565b82840190509392505050565b5f6040820190508181035f8301526154ee81858761547a565b90506154fd60208301846142fe565b949350505050565b7f496e76616c6964204164647265737300000000000000000000000000000000005f82015250565b5f615539600f836141a3565b915061554482615505565b602082019050919050565b5f6020820190508181035f8301526155668161552d565b9050919050565b7f43616e206f6e6c79205265726f6c6c2031202d203130204e46547320617420615f8201527f2074696d65000000000000000000000000000000000000000000000000000000602082015250565b5f6155c76025836141a3565b91506155d28261556d565b604082019050919050565b5f6020820190508181035f8301526155f4816155bb565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f61562f6016836141a3565b915061563a826155fb565b602082019050919050565b5f6020820190508181035f83015261565c81615623565b9050919050565b7f5061796d656e74206661696c65640000000000000000000000000000000000005f82015250565b5f615697600e836141a3565b91506156a282615663565b602082019050919050565b5f6020820190508181035f8301526156c48161568b565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f6156ff6017836141a3565b915061570a826156cb565b602082019050919050565b5f6020820190508181035f83015261572c816156f3565b9050919050565b7f47656d206d7573742062652072657665616c6564206265666f726520697420635f8201527f616e206265207265726f6c6c6564000000000000000000000000000000000000602082015250565b5f61578d602e836141a3565b915061579882615733565b604082019050919050565b5f6020820190508181035f8301526157ba81615781565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6157f5601f836141a3565b9150615800826157c1565b602082019050919050565b5f6020820190508181035f830152615822816157e9565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026158857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261584a565b61588f868361584a565b95508019841693508086168417925050509392505050565b5f6158c16158bc6158b784613f49565b6143db565b613f49565b9050919050565b5f819050919050565b6158da836158a7565b6158ee6158e6826158c8565b848454615856565b825550505050565b5f90565b6159026158f6565b61590d8184846158d1565b505050565b5b81811015615930576159255f826158fa565b600181019050615913565b5050565b601f8211156159755761594681615829565b61594f8461583b565b8101602085101561595e578190505b61597261596a8561583b565b830182615912565b50505b505050565b5f82821c905092915050565b5f6159955f198460080261597a565b1980831691505092915050565b5f6159ad8383615986565b9150826002028217905092915050565b6159c682614199565b67ffffffffffffffff8111156159df576159de614453565b5b6159e982546148cf565b6159f4828285615934565b5f60209050601f831160018114615a25575f8415615a13578287015190505b615a1d85826159a2565b865550615a84565b601f198416615a3386615829565b5f5b82811015615a5a57848901518255600182019150602085019450602081019050615a35565b86831015615a775784890151615a73601f891682615986565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b615aa6615aa182613f49565b615a8c565b82525050565b5f8160601b9050919050565b5f615ac282615aac565b9050919050565b5f615ad382615ab8565b9050919050565b615aeb615ae682614133565b615ac9565b82525050565b5f615afb82614114565b9050919050565b5f615b0c82615ab8565b9050919050565b615b24615b1f82615af1565b615b02565b82525050565b5f615b358289615a95565b602082019150615b458288615ada565b601482019150615b558287615a95565b602082019150615b658286615a95565b602082019150615b758285615b13565b601482019150615b858284615a95565b602082019150819050979650505050505050565b5f615ba382613f49565b9150615bae83613f49565b925082615bbe57615bbd613fc0565b5b828206905092915050565b5f60ff82169050919050565b5f615bdf82615bc9565b9150615bea83615bc9565b9250828201905060ff811115615c0357615c02613f52565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f615c2d82615c09565b615c378185615c13565b9350615c478185602086016141b3565b615c50816141db565b840191505092915050565b5f608082019050615c6e5f830187614298565b615c7b6020830186614298565b615c8860408301856142fe565b8181036060830152615c9a8184615c23565b905095945050505050565b5f81519050615cb38161408c565b92915050565b5f60208284031215615cce57615ccd614059565b5b5f615cdb84828501615ca5565b91505092915050565b5f615cef828561513b565b9150615cfb828461513b565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe68747470733a2f2f68756e6772792d636f666665652d646f76652e6d7966696c65626173652e636f6d2f697066732f516d654e72766671695a6a694b62545133794e65776272334e6d464756324b73667370477a333647354a4a5965752fa26469706673582212207c494b7945f462493257f758efcbc241d6efc517037ee995277ba142f8c2e69a64736f6c6343000814003300000000000000000000000045ca617d0b8e42ea87a483880e56fb986e04abad