Source Code
Overview
CELO Balance
CELO Value
$0.00Multichain Info
Latest 25 from a total of 25 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Forfeit Game | 51333618 | 70 days ago | IN | 0 CELO | 0.00184581 | ||||
| Make Move | 51333598 | 70 days ago | IN | 0 CELO | 0.00279511 | ||||
| Start Game | 51333554 | 70 days ago | IN | 0 CELO | 0.00137852 | ||||
| Forfeit Game | 51333545 | 70 days ago | IN | 0 CELO | 0.00134811 | ||||
| Make Move | 51333504 | 70 days ago | IN | 0 CELO | 0.00280802 | ||||
| Start Game | 51333499 | 70 days ago | IN | 0 CELO | 0.00349257 | ||||
| Forfeit Game | 51333443 | 70 days ago | IN | 0 CELO | 0.00305879 | ||||
| Start Game | 51332749 | 70 days ago | IN | 0 CELO | 0.00059798 | ||||
| Make Move | 51332704 | 70 days ago | IN | 0 CELO | 0.00185761 | ||||
| Make Move | 51332640 | 70 days ago | IN | 0 CELO | 0.00279511 | ||||
| Start Game | 51332620 | 70 days ago | IN | 0 CELO | 0.00349257 | ||||
| Forfeit Game | 51332568 | 70 days ago | IN | 0 CELO | 0.00305879 | ||||
| Make Move | 51332387 | 70 days ago | IN | 0 CELO | 0.00232728 | ||||
| Start Game | 51332376 | 70 days ago | IN | 0 CELO | 0.00127848 | ||||
| Forfeit Game | 51332314 | 70 days ago | IN | 0 CELO | 0.00059658 | ||||
| Make Move | 51332292 | 70 days ago | IN | 0 CELO | 0.00265978 | ||||
| Make Move | 51332242 | 70 days ago | IN | 0 CELO | 0.00183405 | ||||
| Make Move | 51332200 | 70 days ago | IN | 0 CELO | 0.00277458 | ||||
| Start Game | 51332192 | 70 days ago | IN | 0 CELO | 0.00349257 | ||||
| Forfeit Game | 51332151 | 70 days ago | IN | 0 CELO | 0.00305879 | ||||
| Forfeit Game | 51332065 | 70 days ago | IN | 0 CELO | 0.00141763 | ||||
| Start Game | 51137860 | 73 days ago | IN | 0 CELO | 0.00059777 | ||||
| Start Game | 51137820 | 73 days ago | IN | 0 CELO | 0.00059777 | ||||
| Start Game | 51133615 | 73 days ago | IN | 0 CELO | 0.00059777 | ||||
| Start Game | 51100648 | 73 days ago | IN | 0 CELO | 0.00059777 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TicTacToeSolo
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
No with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title TicTacToeSolo
* @dev Jeu de Tic Tac Toe en mode solo contre l'IA avec leaderboard
*/
contract TicTacToeSolo {
// Structure pour une partie
struct Game {
address player;
uint8[9] board; // 0 = vide, 1 = joueur (X), 2 = IA (O)
uint8 currentTurn; // 1 = joueur, 2 = IA
GameStatus status;
uint256 startTime;
uint256 endTime;
uint8 moveCount;
}
// Statut du jeu
enum GameStatus {
Active,
PlayerWin,
AIWin,
Draw,
Abandoned
}
// Structure pour les statistiques d'un joueur
struct PlayerStats {
uint256 gamesPlayed;
uint256 wins;
uint256 losses;
uint256 draws;
uint256 totalMoves;
uint256 fastestWin; // en secondes
uint256 currentStreak;
uint256 bestStreak;
}
// Structure pour le leaderboard
struct LeaderboardEntry {
address player;
uint256 wins;
uint256 winRate; // pourcentage * 100
uint256 bestStreak;
uint256 fastestWin;
}
// Mapping des parties actives
mapping(address => Game) public activeGames;
// Mapping des statistiques des joueurs
mapping(address => PlayerStats) public playerStats;
// Liste des joueurs pour le leaderboard
address[] public players;
mapping(address => bool) public hasPlayed;
// Événements
event GameStarted(address indexed player, uint256 timestamp);
event MoveMade(address indexed player, uint8 position, uint8 playerType);
event GameEnded(address indexed player, GameStatus status, uint256 duration);
event NewRecord(address indexed player, string recordType, uint256 value);
/**
* @dev Démarre une nouvelle partie
*/
function startGame() external {
require(activeGames[msg.sender].status != GameStatus.Active, "Partie deja en cours");
// Initialiser une nouvelle partie
Game storage game = activeGames[msg.sender];
game.player = msg.sender;
game.board = [0, 0, 0, 0, 0, 0, 0, 0, 0];
game.currentTurn = 1; // Le joueur commence
game.status = GameStatus.Active;
game.startTime = block.timestamp;
game.moveCount = 0;
// Ajouter le joueur à la liste si première partie
if (!hasPlayed[msg.sender]) {
players.push(msg.sender);
hasPlayed[msg.sender] = true;
}
emit GameStarted(msg.sender, block.timestamp);
}
/**
* @dev Le joueur fait un mouvement
* @param position Position sur le plateau (0-8)
*/
function makeMove(uint8 position) external {
Game storage game = activeGames[msg.sender];
require(game.status == GameStatus.Active, "Aucune partie active");
require(game.currentTurn == 1, "Ce n'est pas votre tour");
require(position < 9, "Position invalide");
require(game.board[position] == 0, "Case deja occupee");
// Placer le mouvement du joueur
game.board[position] = 1;
game.moveCount++;
emit MoveMade(msg.sender, position, 1);
// Vérifier si le joueur a gagné
if (checkWin(game.board, 1)) {
endGame(msg.sender, GameStatus.PlayerWin);
return;
}
// Vérifier match nul
if (game.moveCount == 9) {
endGame(msg.sender, GameStatus.Draw);
return;
}
// Tour de l'IA
game.currentTurn = 2;
makeAIMove(msg.sender);
}
/**
* @dev L'IA fait son mouvement (logique simple)
*/
function makeAIMove(address player) internal {
Game storage game = activeGames[player];
// Stratégie de l'IA:
// 1. Gagner si possible
// 2. Bloquer le joueur s'il peut gagner
// 3. Prendre le centre si disponible
// 4. Prendre un coin
// 5. Prendre n'importe quelle case
uint8 move = findWinningMove(game.board, 2);
if (move == 255) {
move = findWinningMove(game.board, 1); // Bloquer
}
if (move == 255 && game.board[4] == 0) {
move = 4; // Centre
}
if (move == 255) {
uint8[4] memory corners = [0, 2, 6, 8];
for (uint8 i = 0; i < 4; i++) {
if (game.board[corners[i]] == 0) {
move = corners[i];
break;
}
}
}
if (move == 255) {
for (uint8 i = 0; i < 9; i++) {
if (game.board[i] == 0) {
move = i;
break;
}
}
}
game.board[move] = 2;
game.moveCount++;
emit MoveMade(player, move, 2);
// Vérifier si l'IA a gagné
if (checkWin(game.board, 2)) {
endGame(player, GameStatus.AIWin);
return;
}
// Vérifier match nul
if (game.moveCount == 9) {
endGame(player, GameStatus.Draw);
return;
}
// Retour au tour du joueur
game.currentTurn = 1;
}
/**
* @dev Trouve un mouvement gagnant pour un joueur
*/
function findWinningMove(uint8[9] memory board, uint8 player) internal pure returns (uint8) {
for (uint8 i = 0; i < 9; i++) {
if (board[i] == 0) {
board[i] = player;
if (checkWin(board, player)) {
return i;
}
board[i] = 0;
}
}
return 255; // Pas de mouvement gagnant
}
/**
* @dev Vérifie si un joueur a gagné
*/
function checkWin(uint8[9] memory board, uint8 player) internal pure returns (bool) {
// Lignes
if (board[0] == player && board[1] == player && board[2] == player) return true;
if (board[3] == player && board[4] == player && board[5] == player) return true;
if (board[6] == player && board[7] == player && board[8] == player) return true;
// Colonnes
if (board[0] == player && board[3] == player && board[6] == player) return true;
if (board[1] == player && board[4] == player && board[7] == player) return true;
if (board[2] == player && board[5] == player && board[8] == player) return true;
// Diagonales
if (board[0] == player && board[4] == player && board[8] == player) return true;
if (board[2] == player && board[4] == player && board[6] == player) return true;
return false;
}
/**
* @dev Termine une partie et met à jour les statistiques
*/
function endGame(address player, GameStatus status) internal {
Game storage game = activeGames[player];
game.status = status;
game.endTime = block.timestamp;
uint256 duration = game.endTime - game.startTime;
// Mettre à jour les statistiques
PlayerStats storage stats = playerStats[player];
stats.gamesPlayed++;
stats.totalMoves += game.moveCount;
if (status == GameStatus.PlayerWin) {
stats.wins++;
stats.currentStreak++;
if (stats.currentStreak > stats.bestStreak) {
stats.bestStreak = stats.currentStreak;
emit NewRecord(player, "Meilleure serie", stats.bestStreak);
}
if (stats.fastestWin == 0 || duration < stats.fastestWin) {
stats.fastestWin = duration;
emit NewRecord(player, "Victoire la plus rapide", duration);
}
} else if (status == GameStatus.AIWin) {
stats.losses++;
stats.currentStreak = 0;
} else if (status == GameStatus.Draw) {
stats.draws++;
}
emit GameEnded(player, status, duration);
}
/**
* @dev Abandonne la partie en cours
*/
function forfeitGame() external {
Game storage game = activeGames[msg.sender];
require(game.status == GameStatus.Active, "Aucune partie active");
endGame(msg.sender, GameStatus.Abandoned);
playerStats[msg.sender].losses++;
playerStats[msg.sender].currentStreak = 0;
}
/**
* @dev Récupère le plateau de jeu actuel
*/
function getBoard(address player) external view returns (uint8[9] memory) {
return activeGames[player].board;
}
/**
* @dev Récupère les statistiques d'un joueur
*/
function getPlayerStats(address player) external view returns (
uint256 gamesPlayed,
uint256 wins,
uint256 losses,
uint256 draws,
uint256 winRate,
uint256 currentStreak,
uint256 bestStreak,
uint256 fastestWin
) {
PlayerStats memory stats = playerStats[player];
uint256 rate = 0;
if (stats.gamesPlayed > 0) {
rate = (stats.wins * 10000) / stats.gamesPlayed; // Winrate * 100
}
return (
stats.gamesPlayed,
stats.wins,
stats.losses,
stats.draws,
rate,
stats.currentStreak,
stats.bestStreak,
stats.fastestWin
);
}
/**
* @dev Récupère le leaderboard (top 10)
*/
function getLeaderboard() external view returns (LeaderboardEntry[] memory) {
uint256 playerCount = players.length;
if (playerCount == 0) {
return new LeaderboardEntry[](0);
}
uint256 size = playerCount > 10 ? 10 : playerCount;
LeaderboardEntry[] memory leaderboard = new LeaderboardEntry[](playerCount);
// Remplir le leaderboard
for (uint256 i = 0; i < playerCount; i++) {
address player = players[i];
PlayerStats memory stats = playerStats[player];
uint256 winRate = 0;
if (stats.gamesPlayed > 0) {
winRate = (stats.wins * 10000) / stats.gamesPlayed;
}
leaderboard[i] = LeaderboardEntry({
player: player,
wins: stats.wins,
winRate: winRate,
bestStreak: stats.bestStreak,
fastestWin: stats.fastestWin
});
}
// Tri par nombre de victoires (bubble sort simple)
for (uint256 i = 0; i < playerCount - 1; i++) {
for (uint256 j = 0; j < playerCount - i - 1; j++) {
if (leaderboard[j].wins < leaderboard[j + 1].wins) {
LeaderboardEntry memory temp = leaderboard[j];
leaderboard[j] = leaderboard[j + 1];
leaderboard[j + 1] = temp;
}
}
}
// Retourner seulement le top 10
LeaderboardEntry[] memory top10 = new LeaderboardEntry[](size);
for (uint256 i = 0; i < size; i++) {
top10[i] = leaderboard[i];
}
return top10;
}
/**
* @dev Récupère le nombre total de joueurs
*/
function getTotalPlayers() external view returns (uint256) {
return players.length;
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": [],
"evmVersion": "cancun"
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"enum TicTacToeSolo.GameStatus","name":"status","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"GameEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"GameStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint8","name":"position","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"playerType","type":"uint8"}],"name":"MoveMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"string","name":"recordType","type":"string"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"NewRecord","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"activeGames","outputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint8","name":"currentTurn","type":"uint8"},{"internalType":"enum TicTacToeSolo.GameStatus","name":"status","type":"uint8"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint8","name":"moveCount","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forfeitGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getBoard","outputs":[{"internalType":"uint8[9]","name":"","type":"uint8[9]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLeaderboard","outputs":[{"components":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"wins","type":"uint256"},{"internalType":"uint256","name":"winRate","type":"uint256"},{"internalType":"uint256","name":"bestStreak","type":"uint256"},{"internalType":"uint256","name":"fastestWin","type":"uint256"}],"internalType":"struct TicTacToeSolo.LeaderboardEntry[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerStats","outputs":[{"internalType":"uint256","name":"gamesPlayed","type":"uint256"},{"internalType":"uint256","name":"wins","type":"uint256"},{"internalType":"uint256","name":"losses","type":"uint256"},{"internalType":"uint256","name":"draws","type":"uint256"},{"internalType":"uint256","name":"winRate","type":"uint256"},{"internalType":"uint256","name":"currentStreak","type":"uint256"},{"internalType":"uint256","name":"bestStreak","type":"uint256"},{"internalType":"uint256","name":"fastestWin","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalPlayers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasPlayed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"position","type":"uint8"}],"name":"makeMove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"playerStats","outputs":[{"internalType":"uint256","name":"gamesPlayed","type":"uint256"},{"internalType":"uint256","name":"wins","type":"uint256"},{"internalType":"uint256","name":"losses","type":"uint256"},{"internalType":"uint256","name":"draws","type":"uint256"},{"internalType":"uint256","name":"totalMoves","type":"uint256"},{"internalType":"uint256","name":"fastestWin","type":"uint256"},{"internalType":"uint256","name":"currentStreak","type":"uint256"},{"internalType":"uint256","name":"bestStreak","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"players","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561000f575f80fd5b50612a618061001d5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c80637780ea1a1161006f5780637780ea1a1461016a5780639c62fbc614610174578063cdafbbb6146101a4578063d65ab5f2146101db578063d9169b77146101e5578063f71d96cb1461021a576100a7565b806332d0bbe3146100ab5780634529cae7146100db5780634fd66eae146100f9578063650271d2146101305780636d763a6e1461014c575b5f80fd5b6100c560048036038101906100c09190611f68565b61024a565b6040516100d29190611fad565b60405180910390f35b6100e3610267565b6040516100f09190611fde565b60405180910390f35b610113600480360381019061010e9190611f68565b610273565b604051610127989796959493929190611ff7565b60405180910390f35b61014a600480360381019061014591906120a9565b610385565b005b6101546106ea565b6040516101619190612200565b60405180910390f35b610172610b34565b005b61018e60048036038101906101899190611f68565b610c92565b60405161019b91906122c5565b60405180910390f35b6101be60048036038101906101b99190611f68565b610d40565b6040516101d2989796959493929190611ff7565b60405180910390f35b6101e3610d84565b005b6101ff60048036038101906101fa9190611f68565b6110e7565b60405161021196959493929190612370565b60405180910390f35b610234600480360381019061022f91906123f9565b611162565b6040516102419190612424565b60405180910390f35b6003602052805f5260405f205f915054906101000a900460ff1681565b5f600280549050905090565b5f805f805f805f805f60015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101000160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090505f80825f0151111561034557815f01516127108360200151610338919061246a565b61034291906124d8565b90505b815f0151826020015183604001518460600151848660c001518760e001518860a00151995099509950995099509950995099505050919395975091939597565b5f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f60048111156103d7576103d66122fd565b5b8160020160019054906101000a900460ff1660048111156103fb576103fa6122fd565b5b1461043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290612562565b60405180910390fd5b6001816002015f9054906101000a900460ff1660ff1614610491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610488906125ca565b60405180910390fd5b60098260ff16106104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90612632565b60405180910390fd5b5f816001018360ff16600981106104f1576104f0612650565b5b602091828204019190069054906101000a900460ff1660ff161461054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610541906126c7565b60405180910390fd5b6001816001018360ff166009811061056557610564612650565b5b602091828204019190066101000a81548160ff021916908360ff160217905550806005015f81819054906101000a900460ff16809291906105a5906126e5565b91906101000a81548160ff021916908360ff160217905550503373ffffffffffffffffffffffffffffffffffffffff167f10ac166a969b6ae9b140c9d6b88c6c4e565e4fc22f858bf92f1542535f0f161a83600160405161060792919061274f565b60405180910390a261067d81600101600980602002604051908101604052809291908260098015610671576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f0104928301926001038202915080841161063b5790505b5050505050600161119d565b156106935761068d3360016115ad565b506106e7565b6009816005015f9054906101000a900460ff1660ff16036106bf576106b93360036115ad565b506106e7565b6002816002015f6101000a81548160ff021916908360ff1602179055506106e5336118f4565b505b50565b60605f60028054905090505f8103610758575f67ffffffffffffffff81111561071657610715612776565b5b60405190808252806020026020018201604052801561074f57816020015b61073c611df5565b8152602001906001900390816107345790505b50915050610b31565b5f600a8211610767578161076a565b600a5b90505f8267ffffffffffffffff81111561078757610786612776565b5b6040519080825280602002602001820160405280156107c057816020015b6107ad611df5565b8152602001906001900390816107a55790505b5090505f5b8381101561094d575f600282815481106107e2576107e1612650565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101000160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090505f80825f015111156108d657815f015161271083602001516108c9919061246a565b6108d391906124d8565b90505b6040518060a001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018281526020018360e0015181526020018360a0015181525085858151811061093257610931612650565b5b602002602001018190525050505080806001019150506107c5565b505f5b60018461095d91906127a3565b811015610a80575f5b6001828661097491906127a3565b61097e91906127a3565b811015610a72578260018261099391906127d6565b815181106109a4576109a3612650565b5b6020026020010151602001518382815181106109c3576109c2612650565b5b6020026020010151602001511015610a65575f8382815181106109e9576109e8612650565b5b6020026020010151905083600183610a0191906127d6565b81518110610a1257610a11612650565b5b6020026020010151848381518110610a2d57610a2c612650565b5b60200260200101819052508084600184610a4791906127d6565b81518110610a5857610a57612650565b5b6020026020010181905250505b8080600101915050610966565b508080600101915050610950565b505f8267ffffffffffffffff811115610a9c57610a9b612776565b5b604051908082528060200260200182016040528015610ad557816020015b610ac2611df5565b815260200190600190039081610aba5790505b5090505f5b83811015610b2857828181518110610af557610af4612650565b5b6020026020010151828281518110610b1057610b0f612650565b5b60200260200101819052508080600101915050610ada565b50809450505050505b90565b5f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6004811115610b8657610b856122fd565b5b8160020160019054906101000a900460ff166004811115610baa57610ba96122fd565b5b14610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190612562565b60405180910390fd5b610bf53360046115ad565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f815480929190610c4590612809565b91905055505f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206006018190555050565b610c9a611e35565b5f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101600980602002604051908101604052809291908260098015610d34576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f01049283019260010382029150808411610cfe5790505b50505050509050919050565b6001602052805f5260405f205f91509050805f0154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b5f6004811115610d9757610d966122fd565b5b5f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020160019054906101000a900460ff166004811115610df657610df56122fd565b5b03610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d9061289a565b60405180910390fd5b5f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905033815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518061012001604052805f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681525081600101906009610f23929190611e58565b506001816002015f6101000a81548160ff021916908360ff1602179055505f8160020160016101000a81548160ff02191690836004811115610f6857610f676122fd565b5b02179055504281600301819055505f816005015f6101000a81548160ff021916908360ff16021790555060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661109657600233908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167fea32a03505fd9f04d664676d72295a86c5fb0465e69654751907ca305bc1d1c7426040516110dc9190611fde565b60405180910390a250565b5f602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900460ff16908060020160019054906101000a900460ff1690806003015490806004015490806005015f9054906101000a900460ff16905086565b60028181548110611171575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8160ff16835f600981106111b5576111b4612650565b5b602002015160ff161480156111e757508160ff16836001600981106111dd576111dc612650565b5b602002015160ff16145b801561121057508160ff168360026009811061120657611205612650565b5b602002015160ff16145b1561121e57600190506115a7565b8160ff168360036009811061123657611235612650565b5b602002015160ff1614801561126857508160ff168360046009811061125e5761125d612650565b5b602002015160ff16145b801561129157508160ff168360056009811061128757611286612650565b5b602002015160ff16145b1561129f57600190506115a7565b8160ff16836006600981106112b7576112b6612650565b5b602002015160ff161480156112e957508160ff16836007600981106112df576112de612650565b5b602002015160ff16145b801561131257508160ff168360086009811061130857611307612650565b5b602002015160ff16145b1561132057600190506115a7565b8160ff16835f6009811061133757611336612650565b5b602002015160ff1614801561136957508160ff168360036009811061135f5761135e612650565b5b602002015160ff16145b801561139257508160ff168360066009811061138857611387612650565b5b602002015160ff16145b156113a057600190506115a7565b8160ff16836001600981106113b8576113b7612650565b5b602002015160ff161480156113ea57508160ff16836004600981106113e0576113df612650565b5b602002015160ff16145b801561141357508160ff168360076009811061140957611408612650565b5b602002015160ff16145b1561142157600190506115a7565b8160ff168360026009811061143957611438612650565b5b602002015160ff1614801561146b57508160ff168360056009811061146157611460612650565b5b602002015160ff16145b801561149457508160ff168360086009811061148a57611489612650565b5b602002015160ff16145b156114a257600190506115a7565b8160ff16835f600981106114b9576114b8612650565b5b602002015160ff161480156114eb57508160ff16836004600981106114e1576114e0612650565b5b602002015160ff16145b801561151457508160ff168360086009811061150a57611509612650565b5b602002015160ff16145b1561152257600190506115a7565b8160ff168360026009811061153a57611539612650565b5b602002015160ff1614801561156c57508160ff168360046009811061156257611561612650565b5b602002015160ff16145b801561159557508160ff168360066009811061158b5761158a612650565b5b602002015160ff16145b156115a357600190506115a7565b5f90505b92915050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050818160020160016101000a81548160ff02191690836004811115611613576116126122fd565b5b02179055504281600401819055505f8160030154826004015461163691906127a3565b90505f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f81548092919061168b90612809565b9190505550826005015f9054906101000a900460ff1660ff16816004015f8282546116b691906127d6565b92505081905550600160048111156116d1576116d06122fd565b5b8460048111156116e4576116e36122fd565b5b0361180257806001015f8154809291906116fd90612809565b9190505550806006015f81548092919061171690612809565b919050555080600701548160060154111561178b57806006015481600701819055508473ffffffffffffffffffffffffffffffffffffffff167f3124e8763b5542ea5c91a0d62d11244216b74ddca02c9178c28348611ae6dc7582600701546040516117829190612902565b60405180910390a25b5f816005015414806117a05750806005015482105b156117fd578181600501819055508473ffffffffffffffffffffffffffffffffffffffff167f3124e8763b5542ea5c91a0d62d11244216b74ddca02c9178c28348611ae6dc75836040516117f49190612978565b60405180910390a25b61189d565b60026004811115611816576118156122fd565b5b846004811115611829576118286122fd565b5b0361185557806002015f81548092919061184290612809565b91905055505f816006018190555061189c565b60036004811115611869576118686122fd565b5b84600481111561187c5761187b6122fd565b5b0361189b57806003015f81548092919061189590612809565b91905055505b5b5b8473ffffffffffffffffffffffffffffffffffffffff167ff24fb46c2712b3949a9ece1c3b55f45bf00d3094026aa4247232a46e7d24c12485846040516118e59291906129a4565b60405180910390a25050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6119a282600101600980602002604051908101604052809291908260098015611996576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116119605790505b50505050506002611d3d565b905060ff8160ff1603611a2057611a1d82600101600980602002604051908101604052809291908260098015611a11576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116119db5790505b50505050506001611d3d565b90505b60ff8160ff16148015611a6157505f82600101600460098110611a4657611a45612650565b5b602091828204019190069054906101000a900460ff1660ff16145b15611a6b57600490505b60ff8160ff1603611b3b575f60405180608001604052805f60ff168152602001600260ff168152602001600660ff168152602001600860ff1681525090505f5b60048160ff161015611b38575f84600101838360ff1660048110611ad257611ad1612650565b5b602002015160ff1660098110611aeb57611aea612650565b5b602091828204019190069054906101000a900460ff1660ff1603611b2b57818160ff1660048110611b1f57611b1e612650565b5b60200201519250611b38565b8080600101915050611aab565b50505b60ff8160ff1603611ba3575f5b60098160ff161015611ba1575f836001018260ff1660098110611b6e57611b6d612650565b5b602091828204019190069054906101000a900460ff1660ff1603611b9457809150611ba1565b8080600101915050611b48565b505b6002826001018260ff1660098110611bbe57611bbd612650565b5b602091828204019190066101000a81548160ff021916908360ff160217905550816005015f81819054906101000a900460ff1680929190611bfe906126e5565b91906101000a81548160ff021916908360ff160217905550508273ffffffffffffffffffffffffffffffffffffffff167f10ac166a969b6ae9b140c9d6b88c6c4e565e4fc22f858bf92f1542535f0f161a826002604051611c60929190612a04565b60405180910390a2611cd682600101600980602002604051908101604052809291908260098015611cca576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f01049283019260010382029150808411611c945790505b5050505050600261119d565b15611ced57611ce68360026115ad565b5050611d3a565b6009826005015f9054906101000a900460ff1660ff1603611d1a57611d138360036115ad565b5050611d3a565b6001826002015f6101000a81548160ff021916908360ff16021790555050505b50565b5f805f90505b60098160ff161015611de9575f848260ff1660098110611d6657611d65612650565b5b602002015160ff1603611ddc5782848260ff1660098110611d8a57611d89612650565b5b602002019060ff16908160ff1681525050611da5848461119d565b15611db35780915050611def565b5f848260ff1660098110611dca57611dc9612650565b5b602002019060ff16908160ff16815250505b8080600101915050611d43565b5060ff90505b92915050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b604051806101200160405280600990602082028036833780820191505090505090565b826009601f01602090048101928215611ede579160200282015f5b83821115611eb057835183826101000a81548160ff021916908360ff16021790555092602001926001016020815f01049283019260010302611e73565b8015611edc5782816101000a81549060ff02191690556001016020815f01049283019260010302611eb0565b505b509050611eeb9190611eef565b5090565b5b80821115611f06575f815f905550600101611ef0565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f3782611f0e565b9050919050565b611f4781611f2d565b8114611f51575f80fd5b50565b5f81359050611f6281611f3e565b92915050565b5f60208284031215611f7d57611f7c611f0a565b5b5f611f8a84828501611f54565b91505092915050565b5f8115159050919050565b611fa781611f93565b82525050565b5f602082019050611fc05f830184611f9e565b92915050565b5f819050919050565b611fd881611fc6565b82525050565b5f602082019050611ff15f830184611fcf565b92915050565b5f6101008201905061200b5f83018b611fcf565b612018602083018a611fcf565b6120256040830189611fcf565b6120326060830188611fcf565b61203f6080830187611fcf565b61204c60a0830186611fcf565b61205960c0830185611fcf565b61206660e0830184611fcf565b9998505050505050505050565b5f60ff82169050919050565b61208881612073565b8114612092575f80fd5b50565b5f813590506120a38161207f565b92915050565b5f602082840312156120be576120bd611f0a565b5b5f6120cb84828501612095565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61210681611f2d565b82525050565b61211581611fc6565b82525050565b60a082015f82015161212f5f8501826120fd565b506020820151612142602085018261210c565b506040820151612155604085018261210c565b506060820151612168606085018261210c565b50608082015161217b608085018261210c565b50505050565b5f61218c838361211b565b60a08301905092915050565b5f602082019050919050565b5f6121ae826120d4565b6121b881856120de565b93506121c3836120ee565b805f5b838110156121f35781516121da8882612181565b97506121e583612198565b9250506001810190506121c6565b5085935050505092915050565b5f6020820190508181035f83015261221881846121a4565b905092915050565b5f60099050919050565b5f81905092915050565b5f819050919050565b61224681612073565b82525050565b5f612257838361223d565b60208301905092915050565b5f602082019050919050565b61227881612220565b612282818461222a565b925061228d82612234565b805f5b838110156122bd5781516122a4878261224c565b96506122af83612263565b925050600181019050612290565b505050505050565b5f610120820190506122d95f83018461226f565b92915050565b6122e881611f2d565b82525050565b6122f781612073565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6005811061233b5761233a6122fd565b5b50565b5f81905061234b8261232a565b919050565b5f61235a8261233e565b9050919050565b61236a81612350565b82525050565b5f60c0820190506123835f8301896122df565b61239060208301886122ee565b61239d6040830187612361565b6123aa6060830186611fcf565b6123b76080830185611fcf565b6123c460a08301846122ee565b979650505050505050565b6123d881611fc6565b81146123e2575f80fd5b50565b5f813590506123f3816123cf565b92915050565b5f6020828403121561240e5761240d611f0a565b5b5f61241b848285016123e5565b91505092915050565b5f6020820190506124375f8301846122df565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61247482611fc6565b915061247f83611fc6565b925082820261248d81611fc6565b915082820484148315176124a4576124a361243d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124e282611fc6565b91506124ed83611fc6565b9250826124fd576124fc6124ab565b5b828204905092915050565b5f82825260208201905092915050565b7f417563756e6520706172746965206163746976650000000000000000000000005f82015250565b5f61254c601483612508565b915061255782612518565b602082019050919050565b5f6020820190508181035f83015261257981612540565b9050919050565b7f4365206e276573742070617320766f74726520746f75720000000000000000005f82015250565b5f6125b4601783612508565b91506125bf82612580565b602082019050919050565b5f6020820190508181035f8301526125e1816125a8565b9050919050565b7f506f736974696f6e20696e76616c6964650000000000000000000000000000005f82015250565b5f61261c601183612508565b9150612627826125e8565b602082019050919050565b5f6020820190508181035f83015261264981612610565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f436173652064656a61206f6363757065650000000000000000000000000000005f82015250565b5f6126b1601183612508565b91506126bc8261267d565b602082019050919050565b5f6020820190508181035f8301526126de816126a5565b9050919050565b5f6126ef82612073565b915060ff82036127025761270161243d565b5b600182019050919050565b5f819050919050565b5f819050919050565b5f61273961273461272f8461270d565b612716565b612073565b9050919050565b6127498161271f565b82525050565b5f6040820190506127625f8301856122ee565b61276f6020830184612740565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6127ad82611fc6565b91506127b883611fc6565b92508282039050818111156127d0576127cf61243d565b5b92915050565b5f6127e082611fc6565b91506127eb83611fc6565b92508282019050808211156128035761280261243d565b5b92915050565b5f61281382611fc6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128455761284461243d565b5b600182019050919050565b7f5061727469652064656a6120656e20636f7572730000000000000000000000005f82015250565b5f612884601483612508565b915061288f82612850565b602082019050919050565b5f6020820190508181035f8301526128b181612878565b9050919050565b7f4d65696c6c6575726520736572696500000000000000000000000000000000005f82015250565b5f6128ec600f83612508565b91506128f7826128b8565b602082019050919050565b5f6040820190508181035f830152612919816128e0565b90506129286020830184611fcf565b92915050565b7f566963746f697265206c6120706c7573207261706964650000000000000000005f82015250565b5f612962601783612508565b915061296d8261292e565b602082019050919050565b5f6040820190508181035f83015261298f81612956565b905061299e6020830184611fcf565b92915050565b5f6040820190506129b75f830185612361565b6129c46020830184611fcf565b9392505050565b5f819050919050565b5f6129ee6129e96129e4846129cb565b612716565b612073565b9050919050565b6129fe816129d4565b82525050565b5f604082019050612a175f8301856122ee565b612a2460208301846129f5565b939250505056fea2646970667358221220840cf2bc3b79362720534324ad13f3ce86d846837919a502cd303aacf23224c664736f6c63430008180033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100a7575f3560e01c80637780ea1a1161006f5780637780ea1a1461016a5780639c62fbc614610174578063cdafbbb6146101a4578063d65ab5f2146101db578063d9169b77146101e5578063f71d96cb1461021a576100a7565b806332d0bbe3146100ab5780634529cae7146100db5780634fd66eae146100f9578063650271d2146101305780636d763a6e1461014c575b5f80fd5b6100c560048036038101906100c09190611f68565b61024a565b6040516100d29190611fad565b60405180910390f35b6100e3610267565b6040516100f09190611fde565b60405180910390f35b610113600480360381019061010e9190611f68565b610273565b604051610127989796959493929190611ff7565b60405180910390f35b61014a600480360381019061014591906120a9565b610385565b005b6101546106ea565b6040516101619190612200565b60405180910390f35b610172610b34565b005b61018e60048036038101906101899190611f68565b610c92565b60405161019b91906122c5565b60405180910390f35b6101be60048036038101906101b99190611f68565b610d40565b6040516101d2989796959493929190611ff7565b60405180910390f35b6101e3610d84565b005b6101ff60048036038101906101fa9190611f68565b6110e7565b60405161021196959493929190612370565b60405180910390f35b610234600480360381019061022f91906123f9565b611162565b6040516102419190612424565b60405180910390f35b6003602052805f5260405f205f915054906101000a900460ff1681565b5f600280549050905090565b5f805f805f805f805f60015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101000160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090505f80825f0151111561034557815f01516127108360200151610338919061246a565b61034291906124d8565b90505b815f0151826020015183604001518460600151848660c001518760e001518860a00151995099509950995099509950995099505050919395975091939597565b5f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f60048111156103d7576103d66122fd565b5b8160020160019054906101000a900460ff1660048111156103fb576103fa6122fd565b5b1461043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290612562565b60405180910390fd5b6001816002015f9054906101000a900460ff1660ff1614610491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610488906125ca565b60405180910390fd5b60098260ff16106104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90612632565b60405180910390fd5b5f816001018360ff16600981106104f1576104f0612650565b5b602091828204019190069054906101000a900460ff1660ff161461054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610541906126c7565b60405180910390fd5b6001816001018360ff166009811061056557610564612650565b5b602091828204019190066101000a81548160ff021916908360ff160217905550806005015f81819054906101000a900460ff16809291906105a5906126e5565b91906101000a81548160ff021916908360ff160217905550503373ffffffffffffffffffffffffffffffffffffffff167f10ac166a969b6ae9b140c9d6b88c6c4e565e4fc22f858bf92f1542535f0f161a83600160405161060792919061274f565b60405180910390a261067d81600101600980602002604051908101604052809291908260098015610671576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f0104928301926001038202915080841161063b5790505b5050505050600161119d565b156106935761068d3360016115ad565b506106e7565b6009816005015f9054906101000a900460ff1660ff16036106bf576106b93360036115ad565b506106e7565b6002816002015f6101000a81548160ff021916908360ff1602179055506106e5336118f4565b505b50565b60605f60028054905090505f8103610758575f67ffffffffffffffff81111561071657610715612776565b5b60405190808252806020026020018201604052801561074f57816020015b61073c611df5565b8152602001906001900390816107345790505b50915050610b31565b5f600a8211610767578161076a565b600a5b90505f8267ffffffffffffffff81111561078757610786612776565b5b6040519080825280602002602001820160405280156107c057816020015b6107ad611df5565b8152602001906001900390816107a55790505b5090505f5b8381101561094d575f600282815481106107e2576107e1612650565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101000160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090505f80825f015111156108d657815f015161271083602001516108c9919061246a565b6108d391906124d8565b90505b6040518060a001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018281526020018360e0015181526020018360a0015181525085858151811061093257610931612650565b5b602002602001018190525050505080806001019150506107c5565b505f5b60018461095d91906127a3565b811015610a80575f5b6001828661097491906127a3565b61097e91906127a3565b811015610a72578260018261099391906127d6565b815181106109a4576109a3612650565b5b6020026020010151602001518382815181106109c3576109c2612650565b5b6020026020010151602001511015610a65575f8382815181106109e9576109e8612650565b5b6020026020010151905083600183610a0191906127d6565b81518110610a1257610a11612650565b5b6020026020010151848381518110610a2d57610a2c612650565b5b60200260200101819052508084600184610a4791906127d6565b81518110610a5857610a57612650565b5b6020026020010181905250505b8080600101915050610966565b508080600101915050610950565b505f8267ffffffffffffffff811115610a9c57610a9b612776565b5b604051908082528060200260200182016040528015610ad557816020015b610ac2611df5565b815260200190600190039081610aba5790505b5090505f5b83811015610b2857828181518110610af557610af4612650565b5b6020026020010151828281518110610b1057610b0f612650565b5b60200260200101819052508080600101915050610ada565b50809450505050505b90565b5f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6004811115610b8657610b856122fd565b5b8160020160019054906101000a900460ff166004811115610baa57610ba96122fd565b5b14610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190612562565b60405180910390fd5b610bf53360046115ad565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f815480929190610c4590612809565b91905055505f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206006018190555050565b610c9a611e35565b5f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101600980602002604051908101604052809291908260098015610d34576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f01049283019260010382029150808411610cfe5790505b50505050509050919050565b6001602052805f5260405f205f91509050805f0154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b5f6004811115610d9757610d966122fd565b5b5f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020160019054906101000a900460ff166004811115610df657610df56122fd565b5b03610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d9061289a565b60405180910390fd5b5f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905033815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518061012001604052805f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681525081600101906009610f23929190611e58565b506001816002015f6101000a81548160ff021916908360ff1602179055505f8160020160016101000a81548160ff02191690836004811115610f6857610f676122fd565b5b02179055504281600301819055505f816005015f6101000a81548160ff021916908360ff16021790555060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661109657600233908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167fea32a03505fd9f04d664676d72295a86c5fb0465e69654751907ca305bc1d1c7426040516110dc9190611fde565b60405180910390a250565b5f602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900460ff16908060020160019054906101000a900460ff1690806003015490806004015490806005015f9054906101000a900460ff16905086565b60028181548110611171575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8160ff16835f600981106111b5576111b4612650565b5b602002015160ff161480156111e757508160ff16836001600981106111dd576111dc612650565b5b602002015160ff16145b801561121057508160ff168360026009811061120657611205612650565b5b602002015160ff16145b1561121e57600190506115a7565b8160ff168360036009811061123657611235612650565b5b602002015160ff1614801561126857508160ff168360046009811061125e5761125d612650565b5b602002015160ff16145b801561129157508160ff168360056009811061128757611286612650565b5b602002015160ff16145b1561129f57600190506115a7565b8160ff16836006600981106112b7576112b6612650565b5b602002015160ff161480156112e957508160ff16836007600981106112df576112de612650565b5b602002015160ff16145b801561131257508160ff168360086009811061130857611307612650565b5b602002015160ff16145b1561132057600190506115a7565b8160ff16835f6009811061133757611336612650565b5b602002015160ff1614801561136957508160ff168360036009811061135f5761135e612650565b5b602002015160ff16145b801561139257508160ff168360066009811061138857611387612650565b5b602002015160ff16145b156113a057600190506115a7565b8160ff16836001600981106113b8576113b7612650565b5b602002015160ff161480156113ea57508160ff16836004600981106113e0576113df612650565b5b602002015160ff16145b801561141357508160ff168360076009811061140957611408612650565b5b602002015160ff16145b1561142157600190506115a7565b8160ff168360026009811061143957611438612650565b5b602002015160ff1614801561146b57508160ff168360056009811061146157611460612650565b5b602002015160ff16145b801561149457508160ff168360086009811061148a57611489612650565b5b602002015160ff16145b156114a257600190506115a7565b8160ff16835f600981106114b9576114b8612650565b5b602002015160ff161480156114eb57508160ff16836004600981106114e1576114e0612650565b5b602002015160ff16145b801561151457508160ff168360086009811061150a57611509612650565b5b602002015160ff16145b1561152257600190506115a7565b8160ff168360026009811061153a57611539612650565b5b602002015160ff1614801561156c57508160ff168360046009811061156257611561612650565b5b602002015160ff16145b801561159557508160ff168360066009811061158b5761158a612650565b5b602002015160ff16145b156115a357600190506115a7565b5f90505b92915050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050818160020160016101000a81548160ff02191690836004811115611613576116126122fd565b5b02179055504281600401819055505f8160030154826004015461163691906127a3565b90505f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f81548092919061168b90612809565b9190505550826005015f9054906101000a900460ff1660ff16816004015f8282546116b691906127d6565b92505081905550600160048111156116d1576116d06122fd565b5b8460048111156116e4576116e36122fd565b5b0361180257806001015f8154809291906116fd90612809565b9190505550806006015f81548092919061171690612809565b919050555080600701548160060154111561178b57806006015481600701819055508473ffffffffffffffffffffffffffffffffffffffff167f3124e8763b5542ea5c91a0d62d11244216b74ddca02c9178c28348611ae6dc7582600701546040516117829190612902565b60405180910390a25b5f816005015414806117a05750806005015482105b156117fd578181600501819055508473ffffffffffffffffffffffffffffffffffffffff167f3124e8763b5542ea5c91a0d62d11244216b74ddca02c9178c28348611ae6dc75836040516117f49190612978565b60405180910390a25b61189d565b60026004811115611816576118156122fd565b5b846004811115611829576118286122fd565b5b0361185557806002015f81548092919061184290612809565b91905055505f816006018190555061189c565b60036004811115611869576118686122fd565b5b84600481111561187c5761187b6122fd565b5b0361189b57806003015f81548092919061189590612809565b91905055505b5b5b8473ffffffffffffffffffffffffffffffffffffffff167ff24fb46c2712b3949a9ece1c3b55f45bf00d3094026aa4247232a46e7d24c12485846040516118e59291906129a4565b60405180910390a25050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6119a282600101600980602002604051908101604052809291908260098015611996576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116119605790505b50505050506002611d3d565b905060ff8160ff1603611a2057611a1d82600101600980602002604051908101604052809291908260098015611a11576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116119db5790505b50505050506001611d3d565b90505b60ff8160ff16148015611a6157505f82600101600460098110611a4657611a45612650565b5b602091828204019190069054906101000a900460ff1660ff16145b15611a6b57600490505b60ff8160ff1603611b3b575f60405180608001604052805f60ff168152602001600260ff168152602001600660ff168152602001600860ff1681525090505f5b60048160ff161015611b38575f84600101838360ff1660048110611ad257611ad1612650565b5b602002015160ff1660098110611aeb57611aea612650565b5b602091828204019190069054906101000a900460ff1660ff1603611b2b57818160ff1660048110611b1f57611b1e612650565b5b60200201519250611b38565b8080600101915050611aab565b50505b60ff8160ff1603611ba3575f5b60098160ff161015611ba1575f836001018260ff1660098110611b6e57611b6d612650565b5b602091828204019190069054906101000a900460ff1660ff1603611b9457809150611ba1565b8080600101915050611b48565b505b6002826001018260ff1660098110611bbe57611bbd612650565b5b602091828204019190066101000a81548160ff021916908360ff160217905550816005015f81819054906101000a900460ff1680929190611bfe906126e5565b91906101000a81548160ff021916908360ff160217905550508273ffffffffffffffffffffffffffffffffffffffff167f10ac166a969b6ae9b140c9d6b88c6c4e565e4fc22f858bf92f1542535f0f161a826002604051611c60929190612a04565b60405180910390a2611cd682600101600980602002604051908101604052809291908260098015611cca576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f01049283019260010382029150808411611c945790505b5050505050600261119d565b15611ced57611ce68360026115ad565b5050611d3a565b6009826005015f9054906101000a900460ff1660ff1603611d1a57611d138360036115ad565b5050611d3a565b6001826002015f6101000a81548160ff021916908360ff16021790555050505b50565b5f805f90505b60098160ff161015611de9575f848260ff1660098110611d6657611d65612650565b5b602002015160ff1603611ddc5782848260ff1660098110611d8a57611d89612650565b5b602002019060ff16908160ff1681525050611da5848461119d565b15611db35780915050611def565b5f848260ff1660098110611dca57611dc9612650565b5b602002019060ff16908160ff16815250505b8080600101915050611d43565b5060ff90505b92915050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b604051806101200160405280600990602082028036833780820191505090505090565b826009601f01602090048101928215611ede579160200282015f5b83821115611eb057835183826101000a81548160ff021916908360ff16021790555092602001926001016020815f01049283019260010302611e73565b8015611edc5782816101000a81549060ff02191690556001016020815f01049283019260010302611eb0565b505b509050611eeb9190611eef565b5090565b5b80821115611f06575f815f905550600101611ef0565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f3782611f0e565b9050919050565b611f4781611f2d565b8114611f51575f80fd5b50565b5f81359050611f6281611f3e565b92915050565b5f60208284031215611f7d57611f7c611f0a565b5b5f611f8a84828501611f54565b91505092915050565b5f8115159050919050565b611fa781611f93565b82525050565b5f602082019050611fc05f830184611f9e565b92915050565b5f819050919050565b611fd881611fc6565b82525050565b5f602082019050611ff15f830184611fcf565b92915050565b5f6101008201905061200b5f83018b611fcf565b612018602083018a611fcf565b6120256040830189611fcf565b6120326060830188611fcf565b61203f6080830187611fcf565b61204c60a0830186611fcf565b61205960c0830185611fcf565b61206660e0830184611fcf565b9998505050505050505050565b5f60ff82169050919050565b61208881612073565b8114612092575f80fd5b50565b5f813590506120a38161207f565b92915050565b5f602082840312156120be576120bd611f0a565b5b5f6120cb84828501612095565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61210681611f2d565b82525050565b61211581611fc6565b82525050565b60a082015f82015161212f5f8501826120fd565b506020820151612142602085018261210c565b506040820151612155604085018261210c565b506060820151612168606085018261210c565b50608082015161217b608085018261210c565b50505050565b5f61218c838361211b565b60a08301905092915050565b5f602082019050919050565b5f6121ae826120d4565b6121b881856120de565b93506121c3836120ee565b805f5b838110156121f35781516121da8882612181565b97506121e583612198565b9250506001810190506121c6565b5085935050505092915050565b5f6020820190508181035f83015261221881846121a4565b905092915050565b5f60099050919050565b5f81905092915050565b5f819050919050565b61224681612073565b82525050565b5f612257838361223d565b60208301905092915050565b5f602082019050919050565b61227881612220565b612282818461222a565b925061228d82612234565b805f5b838110156122bd5781516122a4878261224c565b96506122af83612263565b925050600181019050612290565b505050505050565b5f610120820190506122d95f83018461226f565b92915050565b6122e881611f2d565b82525050565b6122f781612073565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6005811061233b5761233a6122fd565b5b50565b5f81905061234b8261232a565b919050565b5f61235a8261233e565b9050919050565b61236a81612350565b82525050565b5f60c0820190506123835f8301896122df565b61239060208301886122ee565b61239d6040830187612361565b6123aa6060830186611fcf565b6123b76080830185611fcf565b6123c460a08301846122ee565b979650505050505050565b6123d881611fc6565b81146123e2575f80fd5b50565b5f813590506123f3816123cf565b92915050565b5f6020828403121561240e5761240d611f0a565b5b5f61241b848285016123e5565b91505092915050565b5f6020820190506124375f8301846122df565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61247482611fc6565b915061247f83611fc6565b925082820261248d81611fc6565b915082820484148315176124a4576124a361243d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124e282611fc6565b91506124ed83611fc6565b9250826124fd576124fc6124ab565b5b828204905092915050565b5f82825260208201905092915050565b7f417563756e6520706172746965206163746976650000000000000000000000005f82015250565b5f61254c601483612508565b915061255782612518565b602082019050919050565b5f6020820190508181035f83015261257981612540565b9050919050565b7f4365206e276573742070617320766f74726520746f75720000000000000000005f82015250565b5f6125b4601783612508565b91506125bf82612580565b602082019050919050565b5f6020820190508181035f8301526125e1816125a8565b9050919050565b7f506f736974696f6e20696e76616c6964650000000000000000000000000000005f82015250565b5f61261c601183612508565b9150612627826125e8565b602082019050919050565b5f6020820190508181035f83015261264981612610565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f436173652064656a61206f6363757065650000000000000000000000000000005f82015250565b5f6126b1601183612508565b91506126bc8261267d565b602082019050919050565b5f6020820190508181035f8301526126de816126a5565b9050919050565b5f6126ef82612073565b915060ff82036127025761270161243d565b5b600182019050919050565b5f819050919050565b5f819050919050565b5f61273961273461272f8461270d565b612716565b612073565b9050919050565b6127498161271f565b82525050565b5f6040820190506127625f8301856122ee565b61276f6020830184612740565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6127ad82611fc6565b91506127b883611fc6565b92508282039050818111156127d0576127cf61243d565b5b92915050565b5f6127e082611fc6565b91506127eb83611fc6565b92508282019050808211156128035761280261243d565b5b92915050565b5f61281382611fc6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128455761284461243d565b5b600182019050919050565b7f5061727469652064656a6120656e20636f7572730000000000000000000000005f82015250565b5f612884601483612508565b915061288f82612850565b602082019050919050565b5f6020820190508181035f8301526128b181612878565b9050919050565b7f4d65696c6c6575726520736572696500000000000000000000000000000000005f82015250565b5f6128ec600f83612508565b91506128f7826128b8565b602082019050919050565b5f6040820190508181035f830152612919816128e0565b90506129286020830184611fcf565b92915050565b7f566963746f697265206c6120706c7573207261706964650000000000000000005f82015250565b5f612962601783612508565b915061296d8261292e565b602082019050919050565b5f6040820190508181035f83015261298f81612956565b905061299e6020830184611fcf565b92915050565b5f6040820190506129b75f830185612361565b6129c46020830184611fcf565b9392505050565b5f819050919050565b5f6129ee6129e96129e4846129cb565b612716565b612073565b9050919050565b6129fe816129d4565b82525050565b5f604082019050612a175f8301856122ee565b612a2460208301846129f5565b939250505056fea2646970667358221220840cf2bc3b79362720534324ad13f3ce86d846837919a502cd303aacf23224c664736f6c63430008180033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.